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



Søg
Reklame
Statistik
Spørgsmål : 177506
Tips : 31968
Nyheder : 719565
Indlæg : 6408561
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste