|
| 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.
| |
|
|