/ 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
Sende 404 header
Fra : Emil Rasmussen


Dato : 22-08-01 15:33

Hejsa

Jeg kunne godt tænke mig at høre hvad folk har af kreative løsninger vrd.
det at sende en 404 fejl til klienten.
Jeg har fundet ud af, at et givet ?id=234234 ikke findes i min db, og så vil
jeg gerne have vist en 404 fejl til brugeren.
Jeg har prøvet med : header("Status: 404 Not Found"); og header ("HTTP/1.0
404 Not Found"); og jeg forstår godt, at den kun sender besked til klient at
siden ikke findes. Det jeg så gerne vil, er at vise brugeren en 404 side,
uden af skulle bruge header('location: error.php'); for så kan man jo se
/error.php i addresselinien, og det ville jo være fancy hvis man kunne se
den oprindelige indtastede url?

Håber nogen forstår mit fableri

Mvh Emil
--
Emil Rasmussen
http://noget.net




 
 
Lars Petersen (22-08-2001)
Kommentar
Fra : Lars Petersen


Dato : 22-08-01 15:39

> Hejsa
>
> Jeg kunne godt tænke mig at høre hvad folk har af kreative løsninger vrd.
> det at sende en 404 fejl til klienten.
> Jeg har fundet ud af, at et givet ?id=234234 ikke findes i min db, og så
vil
> jeg gerne have vist en 404 fejl til brugeren.
> Jeg har prøvet med : header("Status: 404 Not Found"); og header ("HTTP/1.0
> 404 Not Found"); og jeg forstår godt, at den kun sender besked til klient
at
> siden ikke findes. Det jeg så gerne vil, er at vise brugeren en 404 side,
> uden af skulle bruge header('location: error.php'); for så kan man jo se
> /error.php i addresselinien, og det ville jo være fancy hvis man kunne se
> den oprindelige indtastede url?
>
> Håber nogen forstår mit fableri

I .htaccess skriv:

ErrorDocument 404 /404.php

nu vil 404.php blive kaldt når der kommer en 404 fejl!

Mht med at sende en 404 header så er det blot:

header("404 Not Found");

=)

--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
http://wshlman.moons.dk/ - Say goodbye to GameSpy - A Free Half Life
Manager!
When mailing me, remember there is no truth in my mail!



Lars Petersen (22-08-2001)
Kommentar
Fra : Lars Petersen


Dato : 22-08-01 15:54

> header("404 Not Found");

Uhm ja, det er jo forkert, det er:

header("HTTP/1.1 404 Not Found\n\n");

De to \n'er til sidst læste jeg engang var godt for en eller anden
browser...

--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
http://wshlman.moons.dk/ - Say goodbye to GameSpy - A Free Half Life
Manager!
When mailing me, remember there is no truth in my mail!



Christian Joergensen (22-08-2001)
Kommentar
Fra : Christian Joergensen


Dato : 22-08-01 15:59

Lars Petersen <lars@truth.ioflux.net> wrote:

> De to \n'er til sidst læste jeg engang var godt for en eller anden
> browser...

De to \n'er markerer at headersne er afsendt og at resten skal betragtes
som body.

Kan være meget godt hvis man er sikker på at det er den sidste header man
fyrer af.

--
Christian Jørgensen | "Ford, you're turning into a penguin"
http://www.razor.dk | "Stop it"

Peter Brodersen (22-08-2001)
Kommentar
Fra : Peter Brodersen


Dato : 22-08-01 15:57

On Wed, 22 Aug 2001 16:39:13 +0200, "Lars Petersen"
<lars@truth.ioflux.net> wrote:

>nu vil 404.php blive kaldt når der kommer en 404 fejl!

Problemet er at få der til at opstå en 404-fejl i første omgang. Man
kan fx have et helt fint PHP-dokument, der under nogle omstændigheder
skal give en "200 OK" og i andre en "404 Not Found".

--
- Peter Brodersen

Emil Rasmussen (22-08-2001)
Kommentar
Fra : Emil Rasmussen


Dato : 22-08-01 15:59

> I .htaccess skriv:
>
> ErrorDocument 404 /404.php

Har jeg

> nu vil 404.php blive kaldt når der kommer en 404 fejl!
>
> Mht med at sende en 404 header så er det blot:
>
> header("404 Not Found");

Den header "sender" ikke brugeren nogen steder hen, dvs.den trigger ikke
ErrorDocument directivet. Klienten ved siden ikke findes, men serveren gør
ikke? Det er i hvert fald den problem stilling jeg er kommet frem til.

Nu er det også bare mig der er en flue knepper, og gerne vil have den
oprindelige url stående i addresselinien i stedet for f. eks. 404.php.

Mvh Emil
--
Emil Rasmussen
http://noget.net



Christian Joergensen (22-08-2001)
Kommentar
Fra : Christian Joergensen


Dato : 22-08-01 15:42

Emil Rasmussen <4833o41fj001@sneakemail.com> wrote:

> Jeg har fundet ud af, at et givet ?id=234234 ikke findes i min db, og så
> vil jeg gerne have vist en 404 fejl til brugeren.

header("HTTP/1.0 404 Not Found");
print "<h1>HTTP/1.0 404 Not Found</h1>";
print "The requested URL was not found on this server.";
exit;

--
Christian Jørgensen | "Ford, you're turning into a penguin"
http://www.razor.dk | "Stop it"

Emil Rasmussen (22-08-2001)
Kommentar
Fra : Emil Rasmussen


Dato : 22-08-01 16:01


> header("HTTP/1.0 404 Not Found");
> print "<h1>HTTP/1.0 404 Not Found</h1>";
> print "The requested URL was not found on this server.";

Jeg vil gerne have triggeret en "rigtig" 404 besked, da jeg gerne vil have
fat i min error handler side fra .htaccess.

Mvh Emil
--
Emil Rasmussen
http://noget.net



Michael Rasmussen (22-08-2001)
Kommentar
Fra : Michael Rasmussen


Dato : 22-08-01 16:14

In article <3b83c8fb$0$379$edfadb0f@dspool01.news.tele.dk>, "Emil
Rasmussen" <4833o41fj001@sneakemail.com> wrote:

>> header("HTTP/1.0 404 Not Found");
>> print "<h1>HTTP/1.0 404 Not Found</h1>"; print "The requested URL was
>> not found on this server.";
>
> Jeg vil gerne have triggeret en "rigtig" 404 besked, da jeg gerne vil
> have fat i min error handler side fra .htaccess.
>
> Mvh Emil
> --
> Emil Rasmussen
> http://noget.net

Ifølge php manualen burde det være tilstrækkeligt at skrive:
header("http/1.0 404 Not Found"). Det kan dog være ændret, hvis

1) Default er ændret i Apache; Man kan selv specificere andre beskeder.
2) Bufferet/ikke bufferet udskrift.
3) Hvis man har glemt at skrive exit eller die efter header statement.

Sandsynligvis flere muligheder, men det var hvad, jeg lige kunne ryste ud
af ærmet.

--
Hilsen/Sincerely

Michael Rasmussen

Nezar Nielsen (22-08-2001)
Kommentar
Fra : Nezar Nielsen


Dato : 22-08-01 16:55

"Emil Rasmussen" <4833o41fj001@sneakemail.com> skrev i en meddelelse
news:3b83c29b$0$377$edfadb0f@dspool01.news.tele.dk...
> Hejsa
>
> Jeg kunne godt tænke mig at høre hvad folk har af kreative løsninger vrd.
> det at sende en 404 fejl til klienten.
> Jeg har fundet ud af, at et givet ?id=234234 ikke findes i min db, og så
vil
> jeg gerne have vist en 404 fejl til brugeren.
> Jeg har prøvet med : header("Status: 404 Not Found"); og header ("HTTP/1.0
> 404 Not Found"); og jeg forstår godt, at den kun sender besked til klient
at
> siden ikke findes. Det jeg så gerne vil, er at vise brugeren en 404 side,
> uden af skulle bruge header('location: error.php'); for så kan man jo se
> /error.php i addresselinien, og det ville jo være fancy hvis man kunne se
> den oprindelige indtastede url?

Hejsa,

Ja, som du er lidt inde på, så bliver din besked om at siden ikke findes,
ikke sendt videre til apache's errorhandling mekanisme, når php først er
gået i gang med at parse - Din side skal altså selv sørge for at sende
404-beskeden..

Det er lidt underligt at man endnu ikke kan gøre dette med mod_php(men mon
ikke det kommer), i f.eks. mod_perl kan man AFAIK godt sende request'en
videre internt i apache's documenthandlere...

Du kan dog komme lidt udenom det ved at gemme en "note" i apache's
note-tabel og så bruge virtual til at hente din 404-side - prøv at læse den
sidste note på siden: http://www.php.net/manual/en/function.apache-note.php

--
Mvh. Nezar Nielsen
http://fez.dk/




Nezar Nielsen (22-08-2001)
Kommentar
Fra : Nezar Nielsen


Dato : 22-08-01 17:07

"Nezar Nielsen" <tumpen@fez.dk> skrev i en meddelelse
news:3b83d62d$0$260$d40e179e@nntp02.dk.telia.net...
>
> Du kan dog komme lidt udenom det ved at gemme en "note" i apache's
> note-tabel og så bruge virtual til at hente din 404-side - prøv at læse
den
> sidste note på siden:
http://www.php.net/manual/en/function.apache-note.php
>

hmm, der fik jeg vidst ikke nærlæst nok - ifølge
http://www.php.net/manual/en/function.virtual.php :
For PHP files, you need to use include() or require(); virtual() cannot be
used to include a document which is itself a PHP file.


--
Mvh. Nezar Nielsen
http://fez.dk/




Michael Rasmussen (22-08-2001)
Kommentar
Fra : Michael Rasmussen


Dato : 22-08-01 17:42

In article <3b83d8f0$0$257$d40e179e@nntp02.dk.telia.net>, "Nezar Nielsen"
<tumpen@fez.dk> wrote:

> "Nezar Nielsen" <tumpen@fez.dk> skrev i en meddelelse
> news:3b83d62d$0$260$d40e179e@nntp02.dk.telia.net...
>>
>> Du kan dog komme lidt udenom det ved at gemme en "note" i apache's
>> note-tabel og så bruge virtual til at hente din 404-side - prøv at læse
> den
>> sidste note på siden:
> http://www.php.net/manual/en/function.apache-note.php
>>
>>
> hmm, der fik jeg vidst ikke nærlæst nok - ifølge
> http://www.php.net/manual/en/function.virtual.php : For PHP files, you
> need to use include() or require(); virtual() cannot be used to include
> a document which is itself a PHP file.
>
>
> --
> Mvh. Nezar Nielsen
> http://fez.dk/

Mener også at have læst, at funktionen virtual ikke parser det
inkluderede script
--
Hilsen/Sincerely

Michael Rasmussen

Emil Rasmussen (24-08-2001)
Kommentar
Fra : Emil Rasmussen


Dato : 24-08-01 10:41

Hejsa

> hmm, der fik jeg vidst ikke nærlæst nok - ifølge
> http://www.php.net/manual/en/function.virtual.php :
> For PHP files, you need to use include() or require(); virtual() cannot be
> used to include a document which is itself a PHP file.

Men det inspirede mig til at prøve med:

header("http/1.0 404 Not Found");
include(getenv('DOCUMENT_ROOT') .'error.php');
exit;

Og det ser faktisk ud til at give den ønskede effekt

Mvh Emil
--
Emil Rasmussen
http://noget.net



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