Avatar billede avminarm Juniormester
11. marts 2003 - 16:50 Der er 13 kommentarer og
1 løsning

header virker ikke efter opgrader til 4.3.1

Hejsa

Jeg har lige opgraderet til php ver 4.3.1 og nu virker header("location: bla.php"); ikke mere hvad er det jeg har glemt?
Avatar billede schaefner Juniormester
11. marts 2003 - 16:59 #1
Mener at du skal skrive den fulde sti til dokumentet, men er ikke sikker.
Avatar billede xyborx Nybegynder
11. marts 2003 - 17:40 #2
Det med at man skal skrive den fulde sti har egentlig ikke noget at gøre med PHP. Det er en del af HTTP standarden. At der så er en del browsere der selv kan finde ud af at rette det, er held i uheld..
Nå, tilbage til spørgsmålet :)
Hvilken fejlmelding kommer der? Har du husket at headers skal sendes før noget andet output? Måske har output buffering været slået til i den gamle opsætning så du ikke lagde mærke til at headere skal sendes først?
Avatar billede avminarm Juniormester
11. marts 2003 - 18:48 #3
det virkede under 4.2.1 - jeg har primært opgraderet for at få GDlib til at virke og ja headers sendes før alt andet output - der kommer ingen fejlmelding!! scriptet er sådan her:
<?php
bla bla en masse login sessions vars sættes...
header("Location: ok.php?type=bruger");
exit;
}
?>
Avatar billede avminarm Juniormester
11. marts 2003 - 18:49 #4
scriptet springer ligesom headeren over??
Avatar billede schaefner Juniormester
11. marts 2003 - 18:59 #5
Fra php.net

(PHP 4.2.1, PHP 4.3.1)
If you use a header('Location:...') call in your code, PHP will _always_ force your document's HTTP status code to be 302 if you don't already specify a 3XX code (unless you use http_response_code, below).  However, the HTTP Specification states that an "HTTP/1.1 201 Created" is a valid status code to pair with a "Location:..." header.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30

So, I upgraded to 4.3.1 but the problem remained, luckily the http_response_code option was added to the function call.  I used header('Location:...', TRUE, 201).  Now my server responses were getting generated properly.

Then, horror. Neither browser I used (IE 6 SP1, Mozilla/Phoenix) redirected to my location when I returned a "201 Created" code.

I'm not sure if 201 was ever intended for use with automatic redirection (probably not), but since my redirects don't work with it. I'm resigned to using "HTTP/1.1 302 Found" redirects.

I guess the only problem I see is PHP not letting a header('HTTP/1.1 201 Created') exist with a header('Location:...') without some forcing.
Avatar billede avminarm Juniormester
11. marts 2003 - 19:16 #6
hmmm hvad søren skal jeg så gøre??
Avatar billede avminarm Juniormester
11. marts 2003 - 20:16 #7
arrr - der må da være nogen som har samme problem, min browser er fuldstændig ligeglad med hvad jeg gør :o(
Avatar billede xyborx Nybegynder
11. marts 2003 - 20:30 #8
Jeg ville teste om headeren overhovedet bliver sendt, vha telnet:
>telnet dinserver.dk 80
GET /bla.php HTTP/1.1
HOST: dinserver.dk
[et par tryk på enter]
Avatar billede avminarm Juniormester
11. marts 2003 - 20:32 #9
det ville jeg også gerne, men det er på egen lokale server på min egen pc og jeg har ikke fjerneste ide om hvad telnet egenlig er, men det virkede 100% under 4.2.1 kan det være noget i php.ini?
Avatar billede avminarm Juniormester
11. marts 2003 - 21:31 #10
Error_reporting var sat til Off, og en konstant var sat to gange - det kunne phpikke lide ;-), den er nu rettet til on.

Nyt prob er at den nu opfatter $_SERVER['PHP_SELF'] som en sti, hvis jeg har en fil i en undermapper der f.eks hedder mappe/fil.php giver
echo $_SERVER['PHP_SELF'];

"mappe/fil.php"

hvorfor nu det?
Avatar billede avminarm Juniormester
11. marts 2003 - 21:42 #11
glem det - jeg har vist galt fat i noget: - tak for indsatsen

'PHP_SELF'
The filename of the currently executing script, relative to the document root. For instance, $_SERVER['PHP_SELF'] in a script at the address http://example.com/test.php/foo.bar would be /test.php/foo.bar.

If PHP is running as a command-line processor, this variable is not available.
Avatar billede avminarm Juniormester
11. marts 2003 - 21:42 #12
øhh - vil i have points for indsatsen så smid et svar
Avatar billede xyborx Nybegynder
11. marts 2003 - 21:55 #13
Nej, skidt pyt.. Du fandt jo selv fejlen :)
Avatar billede avminarm Juniormester
12. marts 2003 - 08:24 #14
ok ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester