Bekijk Volledige Versie : Re: [PHP] Redirect - Huil....
Maurice van 't Loo
18/10/03, 01:30
"Maurice van 't Loo" <maurice@nospam.nl> schreef in bericht
news:3f907496$0$50952$edd6591c@news.versatel.net.. .
>
> "Daniel Tryba" <news_nl.internet.www.server-side@canopus.nl> schreef in
> bericht news:bmpr0v$qo2$1@news.tue.nl...
> > Maurice van 't Loo <maurice@nospam.nl> wrote:
> > > Is het mogelijk om binnen PHP een redirect te starten?
> > > Momenteel echo ik het javascript regeltje "document.location=", maar
uit
> > > netheid en simpelheid gebruik ik liever constant PHP ipv te mixen met
> > > javascript.
> >
> > Het 4de voorbeeld op http://nl3.php.net/manual/en/function.header.php
>
> Wow, wat ben je snel....
>
> Enneuh.... heeeee.... met header() kan je dus ook een vorige header de nek
> om draaien....
> Het probleem met header("Location: ) was nl. dat de header al verstuurd
was.
> Ik ben nl. bezig met een module voor een mambo-cms (www.mamboserver.com)
en
> deze heeft al een header verzonden zogauw mijn script aan de beurt is....
>
> Ben dus toch blij dat je me op header() gewezen had, daardoor ging ik toch
> weer eens een keertje lezen :-)
Te vroeg gelachen.....
Ondanks de replace optie, blijf ik de foutmelding krijgen dat de header al
verstuurd is....
Gebruikt:
header ("Location:
http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']."?option=com_wijn-shop&cat1=$cat1&act=cat2",
replace);
Doe ik iets fout? Of is er een andere optie?
Bij voorbaat dank,
Maurice
Daniel Tryba
18/10/03, 01:45
Maurice van 't Loo <maurice@nospam.nl> wrote:
>> Ik ben nl. bezig met een module voor een mambo-cms (www.mamboserver.com)
[knip]
> Te vroeg gelachen.....
> Ondanks de replace optie, blijf ik de foutmelding krijgen dat de header al
> verstuurd is....
[knip]
> Doe ik iets fout? Of is er een andere optie?
Op de reeds genoemde url staat een stukje lager een verhaal over het
versturen van headers en output.
Ik ken het mambo gebeuren niet maar voor mij lijkt het op een fout in de
script flow.
--
Daniel Tryba
Maurice van 't Loo
18/10/03, 02:00
"Daniel Tryba" <news_nl.internet.www.server-side@canopus.nl> schreef in
bericht news:bmpuls$rbr$1@news.tue.nl...
> Maurice van 't Loo <maurice@nospam.nl> wrote:
> >> Ik ben nl. bezig met een module voor een mambo-cms
(www.mamboserver.com)
> [knip]
> > Te vroeg gelachen.....
> > Ondanks de replace optie, blijf ik de foutmelding krijgen dat de header
al
> > verstuurd is....
> [knip]
> > Doe ik iets fout? Of is er een andere optie?
>
> Op de reeds genoemde url staat een stukje lager een verhaal over het
> versturen van headers en output.
>
> Ik ken het mambo gebeuren niet maar voor mij lijkt het op een fout in de
> script flow.
Het is het nadeel van schrijven van modules voor een reeds bestaand
project... Ik kan het voor mezelf wel gaan wijzigen (misschien), maar dat
veranderd niet perse het hele project...
Tegen de tijd dat mijn module aan de beurt is, is er reeds een hoop code
naar de browser gestuurd, m.a.w. hoe ik het ook wend of keert, ik kan de
Location: header niet meer versturen.
Dus dan maar weer met gebogen hoofd terug naar 't javascript regeltje...
Werkt wel met IE, maar ik weet niet of het ook correct werkt met browsers
als Lynx enzo....
Groetjes,
Maurice
Daniel Tryba
18/10/03, 02:30
Maurice van 't Loo <maurice@nospam.nl> wrote:
>> Ik ken het mambo gebeuren niet maar voor mij lijkt het op een fout in de
>> script flow.
> Tegen de tijd dat mijn module aan de beurt is, is er reeds een hoop code
> naar de browser gestuurd, m.a.w. hoe ik het ook wend of keert, ik kan de
> Location: header niet meer versturen.
Je kunt output buffering globaal aanzetten, daarmee zou je dit
probleem moeten kunnen omzeilen:
output_buffering = On
--
Daniel Tryba
Maurice van 't Loo wrote:
>
> "Daniel Tryba" <news_nl.internet.www.server-side@canopus.nl> schreef in
> bericht news:bmpuls$rbr$1@news.tue.nl...
>> Maurice van 't Loo <maurice@nospam.nl> wrote:
>> >> Ik ben nl. bezig met een module voor een mambo-cms
> (www.mamboserver.com)
>> [knip]
>> > Te vroeg gelachen.....
>> > Ondanks de replace optie, blijf ik de foutmelding krijgen dat de header
> al
>> > verstuurd is....
>> [knip]
>> > Doe ik iets fout? Of is er een andere optie?
>>
>> Op de reeds genoemde url staat een stukje lager een verhaal over het
>> versturen van headers en output.
>>
>> Ik ken het mambo gebeuren niet maar voor mij lijkt het op een fout in de
>> script flow.
>
> Het is het nadeel van schrijven van modules voor een reeds bestaand
> project... Ik kan het voor mezelf wel gaan wijzigen (misschien), maar dat
> veranderd niet perse het hele project...
>
> Tegen de tijd dat mijn module aan de beurt is, is er reeds een hoop code
> naar de browser gestuurd, m.a.w. hoe ik het ook wend of keert, ik kan de
> Location: header niet meer versturen.
> Dus dan maar weer met gebogen hoofd terug naar 't javascript regeltje...
> Werkt wel met IE, maar ik weet niet of het ook correct werkt met browsers
> als Lynx enzo....
Je hebt er ook een html tag voor, iets met meta-refresh. Die zou in alle
browsers moeten werken, en dan heb je ook geen javascript nodig.
Mark
Ronald Paul
18/10/03, 11:15
Marcus <mark@ijbema.xs4all.nl> schreef:
>> Tegen de tijd dat mijn module aan de beurt is, is er reeds een hoop code
>> naar de browser gestuurd, m.a.w. hoe ik het ook wend of keert, ik kan de
>> Location: header niet meer versturen.
>> Dus dan maar weer met gebogen hoofd terug naar 't javascript regeltje...
>> Werkt wel met IE, maar ik weet niet of het ook correct werkt met browsers
>> als Lynx enzo....
>
>Je hebt er ook een html tag voor, iets met meta-refresh. Die zou in alle
>browsers moeten werken, en dan heb je ook geen javascript nodig.
Als er al een hoop code naar de browser is gestuurd, zal de HTML-head
ook al wel afgesloten zijn denk ik. Nou weet ik niet wat het gedrag
van een META-tag is in de body, maar erg netjes is het niet.
Wat de OP naast de voorgestelde quick-and-dirty oplossingen ook nog
kan doen is de redirect in PHP zelf afhandelen: de inhoud van de
nieuwe URL met bijvoorbeeld fopen() ophalen en doorgeven met
fpassthru(). Maar dan zit je nog wel met de hoop code die al
doorgegeven is, inclusief met het verkeerd nesten van de HTML-tags.
--
Groet, Ronald