/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Redirecte EFTER header
Fra : Anders M


Dato : 09-10-09 20:30

Hej,

Kan man ikke redirecte med PHP efter headeren er sendt så man kan
skrive f.eks.

<html><head></head><body><?if(..)redirect("page.php")?>...

i stedet for at skulle gøre det over html.. det må ikke være med
clientscripts som f.eks. javascript..

MVh Anders

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jan Nielsen (09-10-2009)
Kommentar
Fra : Jan Nielsen


Dato : 09-10-09 20:52

Anders M skrev:
> Hej,
>
> Kan man ikke redirecte med PHP efter headeren er sendt så man kan
> skrive f.eks.
>
> <html><head></head><body><?if(..)redirect("page.php")?>...
>
> i stedet for at skulle gøre det over html.. det må ikke være med
> clientscripts som f.eks. javascript..

Nej, eller andre server sprog...
Når headeren er afsluttet har serveren sendt en status kode til
klienten, og kan ikke ændre eller redirect fra denne.

MEN du kan slå output buffering i php til, således at output først
skrives når du beder om det, på den måde kan du redirect senere i
scriptet selvom du har lavet output (da det ikke bliver sendt).


Anders M (09-10-2009)
Kommentar
Fra : Anders M


Dato : 09-10-09 21:36

Jan Nielsen wrote in dk.edb.internet.webdesign.serverside.php:
> Anders M skrev:
> > Hej,
> >
> > Kan man ikke redirecte med PHP efter headeren er sendt så man kan
> > skrive f.eks.
> >
> > <html><head></head><body><?if(..)redirect("page.php")?>...
> >
> > i stedet for at skulle gøre det over html.. det må ikke være med
> > clientscripts som f.eks. javascript..
>
> Nej, eller andre server sprog...
> Når headeren er afsluttet har serveren sendt en status kode til
> klienten, og kan ikke ændre eller redirect fra denne.
>
> MEN du kan slå output buffering i php til, således at output først
> skrives når du beder om det, på den måde kan du redirect senere i
> scriptet selvom du har lavet output (da det ikke bliver sendt).
>
i asp kan du jo alle steder på siden skrive <%Response.Redirect
"side"%>.. er der ikke noget tilsvarende i php?

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Anders M (09-10-2009)
Kommentar
Fra : Anders M


Dato : 09-10-09 21:38

Jan Nielsen wrote in dk.edb.internet.webdesign.serverside.php:
> Anders M skrev:
> > Hej,
> >
> > Kan man ikke redirecte med PHP efter headeren er sendt så man kan
> > skrive f.eks.
> >
> > <html><head></head><body><?if(..)redirect("page.php")?>...
> >
> > i stedet for at skulle gøre det over html.. det må ikke være med
> > clientscripts som f.eks. javascript..
>
> Nej, eller andre server sprog...
> Når headeren er afsluttet har serveren sendt en status kode til
> klienten, og kan ikke ændre eller redirect fra denne.
>
> MEN du kan slå output buffering i php til, således at output først
> skrives når du beder om det, på den måde kan du redirect senere i
> scriptet selvom du har lavet output (da det ikke bliver sendt).
>
jeg tænker på noget tilsvarende ASP hvor du alle steder på siden kan
skrive response.redirect "page"..

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Anders (09-10-2009)
Kommentar
Fra : Anders


Dato : 09-10-09 22:23

Anders M skrev:
> Jan Nielsen wrote in dk.edb.internet.webdesign.serverside.php:
>> Anders M skrev:
>>> Hej,
>>>
>>> Kan man ikke redirecte med PHP efter headeren er sendt så man kan
>>> skrive f.eks.
>>>
>>> <html><head></head><body><?if(..)redirect("page.php")?>...
>>>
>>> i stedet for at skulle gøre det over html.. det må ikke være med
>>> clientscripts som f.eks. javascript..
>>
>> Nej, eller andre server sprog...
>> Når headeren er afsluttet har serveren sendt en status kode til
>> klienten, og kan ikke ændre eller redirect fra denne.
>>
>> MEN du kan slå output buffering i php til, således at output først
>> skrives når du beder om det, på den måde kan du redirect senere i
>> scriptet selvom du har lavet output (da det ikke bliver sendt).
>>
> jeg tænker på noget tilsvarende ASP hvor du alle steder på siden kan
> skrive response.redirect "page"..

Nu kender jeg ikke ASP, men hvis det er muligt der, er det fordi ASP
ikke sender header til browseren før scriptet er kørt.
I PHP kan det gøres *hvis* output buffering er slået til. Altså du
starter dit script med ob_start(); og slutter med ob_end_flush();
ex.
<?php ob_start(); ?>
<!Doctype...
<html>
....
<?php if (...) header("Location: $url"); ?>
</html>
<?php ob_end_flush(); ?>

Stig Johansen (10-10-2009)
Kommentar
Fra : Stig Johansen


Dato : 10-10-09 01:53

Anders wrote:

> Anders M skrev:
>> jeg tænker på noget tilsvarende ASP hvor du alle steder på siden kan
>> skrive response.redirect "page"..
>
> Nu kender jeg ikke ASP, men hvis det er muligt der, er det fordi ASP
> ikke sender header til browseren før scriptet er kørt.

Det er sådan set det samme.

Hvis man ikke kører med 'buffering', kan man ikke skrive headere
hvorsomhelst.

Kører man med buffering som:
> I PHP kan det gøres *hvis* output buffering er slået til.
Kan man godt.

Men at bruge buffering er tegn på dårlig kode.

--
Med venlig hilsen
Stig Johansen

Philip Nunnegaard (10-10-2009)
Kommentar
Fra : Philip Nunnegaard


Dato : 10-10-09 02:06

Anders skrev:

> Nu kender jeg ikke ASP, men hvis det er muligt der, er det fordi ASP
> ikke sender header til browseren før scriptet er kørt.

Så hudt jeg visker fra da jeg kodede i ASP, fik jeg en eller anden
http-fejlkode, der betød det samme som php's meddelelse om at headeren
allerede er sendt.

> I PHP kan det gøres *hvis* output buffering er slået til. Altså du
> starter dit script med ob_start(); og slutter med ob_end_flush();
> ex.
> <?php ob_start(); ?>
> <!Doctype...
> <html>
> ...
> <?php if (...) header("Location: $url"); ?>
> </html>
> <?php ob_end_flush(); ?>

Lidt nysgerrigt kunne jeg godt tænke mig at vide hvad man skal bruge en
redirect til, efter sidens output er hentet ned.
Umiddelbart ville jeg anse det som spild af båndbredde og/eller serverkraft.

--
Philip - http://chartbase.dk | http://www.hitsurf.dk

Anders (11-10-2009)
Kommentar
Fra : Anders


Dato : 11-10-09 02:20

Philip Nunnegaard skrev:
> Lidt nysgerrigt kunne jeg godt tænke mig at vide hvad man skal bruge en
> redirect til, efter sidens output er hentet ned.
> Umiddelbart ville jeg anse det som spild af båndbredde og/eller
> serverkraft.

Jeg gik bare ud fra Anders M havde en grund til at spørge som han
gjorde.

Jeg kunne derimod godt forestille mig et lidt kluntet eksempel, hvor
f.eks en form-validering finder sted /efter/ PHP er begyndt at sende
HTML'en. Måske er det det Stig mener med, at buffering er tegn på
dårlig kode?

Anders M (11-10-2009)
Kommentar
Fra : Anders M


Dato : 11-10-09 09:30

Philip Nunnegaard wrote in dk.edb.internet.webdesign.serverside.php:
> Anders skrev:
>
> > Nu kender jeg ikke ASP, men hvis det er muligt der, er det fordi ASP
> > ikke sender header til browseren før scriptet er kørt.
>
> Så hudt jeg visker fra da jeg kodede i ASP, fik jeg en eller anden
> http-fejlkode, der betød det samme som php's meddelelse om at headeren
> allerede er sendt.
>
> > I PHP kan det gøres *hvis* output buffering er slået til. Altså du
> > starter dit script med ob_start(); og slutter med ob_end_flush();
> > ex.
> > <?php ob_start(); ?>
> > <!Doctype...
> > <html>
> > ...
> > <?php if (...) header("Location: $url"); ?>
> > </html>
> > <?php ob_end_flush(); ?>
>
> Lidt nysgerrigt kunne jeg godt tænke mig at vide hvad man skal bruge en
> redirect til, efter sidens output er hentet ned.
> Umiddelbart ville jeg anse det som spild af båndbredde og/eller serverkraft.

ja, men det er fordi at brugeren gemmer noget via TinyMCE, og den skal reloades
for at være opdateret..

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

scootergrisen (13-10-2009)
Kommentar
Fra : scootergrisen


Dato : 13-10-09 03:03

Du kan gøre det med et <meta> mellem <head> og </head>

<meta http-equiv="refresh" content="0;url=http://example.com/" />

0 er det antal sekunder browseren skal vente med at gå til det nye
sted.


Jan Nielsen (13-10-2009)
Kommentar
Fra : Jan Nielsen


Dato : 13-10-09 23:15

scootergrisen skrev:
> Du kan gøre det med et <meta> mellem <head> og </head>
>
> <meta http-equiv="refresh" content="0;url=http://example.com/" />
>
> 0 er det antal sekunder browseren skal vente med at gå til det nye
> sted.
>
OP skriver jo netop han ikke vil bruge client side til det, meta er også
client side.

Derudover vil en klient side refresh medføre endnu en request og "click"
i visse browsere, samt gøre back besværlig.


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste