|
| Header location problemer Fra : Andreas N Rasmussen |
Dato : 19-08-01 08:51 |
|
Kan det passe at header("Location: $redirectUrl"); kun kan kaldes i
starten af scriptet? Jeg har lagt den ind i en if, men når den skal
udføres får jeg følgende output:
Warning: Cannot add header information - headers already sent by (output
started at .... line 11
Line 11, indeholder bare if (...) { - så den burde da ikke sende noget
til output?
Findes der en anden, mere effektiv, metode at sende browseren til en
anden side (ikke include()/require() )?
På forhånd tak
MVH ANR
"Look at me! I'm a puffy pink cloud!"
-Homer Simpson
| |
Niels Andersen (19-08-2001)
| Kommentar Fra : Niels Andersen |
Dato : 19-08-01 09:09 |
|
"Andreas N Rasmussen" <anrNOTPART@OFMAILmac.com> wrote in message
news:1eydsjq.1xh6btwz4dzh8N%anrNOTPART@OFMAILmac.com...
> Kan det passe at header("Location: $redirectUrl"); kun kan kaldes i
> starten af scriptet?
Nej. Men headere skal sendes før NOGET som helst andet! Ikke så meget som et
mellemrum eller linjeskift kan gå!
> Warning: Cannot add header information - headers already sent by (output
> started at .... line 11
>
> Line 11, indeholder bare if (...) { - så den burde da ikke sende noget
> til output?
Må jeg se linje 10 og 11?
> Findes der en anden, mere effektiv, metode at sende browseren til en
> anden side (ikke include()/require() )?
I dette tilfælle skal vi nok se lidt på, hvad det er der går galt omkring
linje 11.
Men hvis du ikke kan undgå at generere noget af "bodyen" før du sender en
header (location, cookie, whatever), så kan du bruge output buffering.
Det gør, at den ikke sender noget afsted, før det HELE er genereret. På den
måde er det aldrig for sent at tilføje en header.
I starten af scriptet skriver du bare "ob_start();". Når du så er færdige
med headere og den slags, skriver du "ob_end_flush()". Den sidste spytter
alt det ud der er genereret foreløbig, og så ob fra igen.
--
Mvh.
Niels Andersen
| |
Andreas N Rasmussen (19-08-2001)
| Kommentar Fra : Andreas N Rasmussen |
Dato : 19-08-01 11:03 |
|
Niels Andersen <niels-usenet@myplace.dk> wrote:
>
"Allright Brain, I don't like you and you don't like me, but let's just
do this so I can back to killing you with beer."
-Homer Simpson
| |
Andreas N Rasmussen (19-08-2001)
| Kommentar Fra : Andreas N Rasmussen |
Dato : 19-08-01 11:03 |
|
Niels Andersen <niels-usenet@myplace.dk> wrote:
>Må jeg se linje 10 og 11?
10:$redirectUrl = ' http://www.test.com';
11:if ( ! ( $theFile = @fopen ("date.dat", 'r') ) ) {
dette fungerer fint når filen er der, men da jeg ville redirecte hvis
filen ikke kunne åbnes, prøvede jeg med headeren.
>Men hvis du ikke kan undgå at generere noget af "bodyen" før du sender
en
>header (location, cookie, whatever), så kan du bruge output buffering.
>Det gør, at den ikke sender noget afsted, før det HELE er genereret. På
den
>måde er det aldrig for sent at tilføje en header.
>I starten af scriptet skriver du bare "ob_start();". Når du så er
færdige
>med headere og den slags, skriver du "ob_end_flush()". Den sidste
spytter
>alt det ud der er genereret foreløbig, og så ob fra igen.
Det skal jeg prøve. Tak.
MVH ANR
"A lifetime of working in a nuclear power plant has givin me a healty
green glow. And left me as impotent as a Nevada boxing commissioner."
-Montgomery Burns
| |
Niels Andersen (19-08-2001)
| Kommentar Fra : Niels Andersen |
Dato : 19-08-01 12:12 |
|
"Andreas N Rasmussen" <anrNOTPART@OFMAILmac.com> wrote in message
news:1eydyfd.17tiuq2yfk3ypN%anrNOTPART@OFMAILmac.com...
> 11:if ( ! ( $theFile = @fopen ("date.dat", 'r') ) ) {
Måske du skulle tjekke om filen er der før du åbner den?
if (!file_exists('date.dat)) {
header("Location: $redirectUrl");
exit;
}
$theFile = fopen ("date.dat", 'r');
Det er generelt en skidt ide bare at prøve, og se om det går galt.
Fejl bør kun opstå, når der er en... fejl.
--
Mvh.
Niels Andersen
| |
Andreas N Rasmussen (19-08-2001)
| Kommentar Fra : Andreas N Rasmussen |
Dato : 19-08-01 13:50 |
|
Niels Andersen <niels-usenet@myplace.dk> wrote:
> "Andreas N Rasmussen" <anrNOTPART@OFMAILmac.com> wrote in message
> news:1eydyfd.17tiuq2yfk3ypN%anrNOTPART@OFMAILmac.com...
> > 11:if ( ! ( $theFile = @fopen ("date.dat", 'r') ) ) {
>
> Måske du skulle tjekke om filen er der før du åbner den?
>
> if (!file_exists('date.dat)) {
> header("Location: $redirectUrl");
> exit;
> }
> $theFile = fopen ("date.dat", 'r');
>
> Det er generelt en skidt ide bare at prøve, og se om det går galt.
> Fejl bør kun opstå, når der er en... fejl.
Jamen, hva så hvis den af en anden grund ikke kan åbne den? (à la
skrivebeskyttet) så har jeg stadig muligheden for at fopen laver fejl.
Men tak alligevel - jeg roede lidt med det du skrev sidst, og nu
fungerer det sku' !
MVH ANR
"Donuts - is there anything they can't do?"
-Homer Simpson
| |
Niels Andersen (19-08-2001)
| Kommentar Fra : Niels Andersen |
Dato : 19-08-01 15:21 |
|
"Andreas N Rasmussen" <anrNOTPART@OFMAILmac.com> wrote in message
news:1eye5r7.8xakztsx3uoqN%anrNOTPART@OFMAILmac.com...
> > Det er generelt en skidt ide bare at prøve, og se om det går galt.
> > Fejl bør kun opstå, når der er en... fejl.
>
> Jamen, hva så hvis den af en anden grund ikke kan åbne den? (à la
> skrivebeskyttet) så har jeg stadig muligheden for at fopen laver fejl.
Ja, men det er en situation der ikke burde ske, og så er det noget andet.
Det burde man på et eller andet niveau også tjekke, men så skal man overveje
hvor vigtigt projektet er. Netop den fejl, vil jo teoretisk set aldrig
opstå. Medmindre du dummer dig.
Så vidt jeg kan se er det slet ikke usandsynligt at filen ikke findes.
Derfor skal du ikke bare gå ud fra at den gør, og så prøve at fange fejlen.
Fejl bør som sagt slet ikke opstå.
--
Mvh.
Niels Andersen
| |
|
|