Avatar billede Yesper Nybegynder
12. maj 2003 - 22:35 Der er 18 kommentarer og
1 løsning

errordocument - htacess + php

Jeg ønsker at genere min egen error 404 meddelelse,....

Jeg har oprettet en .htacess med følgende indhold:

ErrorDocument 404 http://www.minside.dk/redirect.php

I min redirect.php undersøger jeg for hvad der er skrevet:
...
$split_uri = explode("/","$HTTP_REFERER");
$brugernavn_u = $split_uri[count($split_uri)-1];
...

$brugernavn_u spørger i en database for brugere, hvis brugeren findes
sendes der videre til hans egen side hvis ikke fremkommer der en fejlmeddelelse,...

Problemet er at det virker på Mac OSX i IE5, men ikke i andre browsere,...
Det virker heller ikke på PC
Avatar billede htm Nybegynder
12. maj 2003 - 22:43 #1
Fylder dit dokument mere end 500 Byte? Hvis ikke vil Internet explorer ikke kendes ved den!
Se nederst: http://www.webcafe.dk/artikler/apache/htaccessfejlbeskeder/

Bemærk at det er det der bliver sendt til browseren der skal fylde mere end 500 Byte!

Hvis ikke dette er dit problem, må du lige give noget kode!
Avatar billede Yesper Nybegynder
12. maj 2003 - 22:58 #2
Det ser ud til at .htacess virker fint, men koden er nok ikke rigtig

(kode start)
<?php
include("config/mydata.inc");

$url_sti = getenv("HTTP_REFERER");
$split_uri = explode("/","$url_sti");
$brugernavn_u = $split_uri[count($split_uri)-1];

function set_cookie($brug,$sprog){
setcookie("co_bruger",$brug,$tid);
setcookie("co_sprog",$sprog,$tid);
}

function go_back($text){
echo "<center><br><br>$text";
exit;
}

$resultat = mysql_query("select bruger,sprog from tabel where bruger = '$brugernavn_u'");
$row = mysql_fetch_array($resultat);

$log_sti = $row[sprog] . "/show_" . $row[sprog] . ".php";

if ($row[bruger]<>$brugernavn_u) go_back ( "<h1><b>S O R R Y</b><br><br>Error 404 says:</h1>There is no page like: <b>$url_sti</b><br><br>or<br><br>there is no user like: <b>$brugernavn_u</b><br><br>on this server !");

set_cookie($bruger,$sprog);

header ("Location: $log_sti");
exit;


?>
Avatar billede htm Nybegynder
12. maj 2003 - 23:01 #3
Hvilke browsere tester du på? Som jeg skrev skal outputtet til browseren være større end 500 Byte! Der er ikke noget i din kode der er browserspecifik, da det bliver ordnet på serveren det hele!

Men det script du har der ser ikke ud til at have over 500 Byte til at outputte til browseren!
Avatar billede Yesper Nybegynder
12. maj 2003 - 23:08 #4
Jeg tester på:
MS IE6 Windows
Safari Mac OSX
Camino Mac OSX
Netscape 7.0 Mac OSX
Samt en hvor det virker MS IE5 MacOSX

Jesper
Avatar billede htm Nybegynder
12. maj 2003 - 23:10 #5
Kender ikke noget til Mac OSX men ved der er den lille irriterende ting i IE6!

Hvordan reagerer den på de forskellige browsere? bliver der vist noget overhovedet, eller hvad sker der?
Avatar billede Yesper Nybegynder
12. maj 2003 - 23:12 #6
Der bliver i dette tilfælde intet vist,....
Avatar billede htm Nybegynder
12. maj 2003 - 23:19 #7
Er "intet" = med browserens egen fejlside eller en blank side?

Og havde du prøvet mit første forslag?
Avatar billede Yesper Nybegynder
12. maj 2003 - 23:23 #8
Blank side
Men hvis jeg forsøger at hente URL med vaiablen getenv("REQUEST_URI"); på diverse Browsere på Mac bliver der redirigeret til den rigtige side men med fejlsiden som variabelindhold

Jesper
Avatar billede Yesper Nybegynder
12. maj 2003 - 23:50 #9
Jeg har læst på webcafe, men jeg er ikke med på hvordan jeg får mere en 500 byte sendt til browseren,...

Iøvrigt så virker redirigeringen .htacess får fat i redirect.php, men der vises boget forskelligt alt efter hvilken browser der bliver brugt,.......

Windows IE6
REQUEST_URI redirect.php
HTTP_REFERER

Mac IE5
REQUEST_URI redirect.php
HTTP_REFERER http://www.minside.dk/brugernavn

Det er den sidste jeg har brug for da jeg har behov for at slå brugernavnet op i en database
Jesper
Avatar billede htm Nybegynder
13. maj 2003 - 17:41 #10
Lyder mærkeligt men du kan prøve at ændre
$url_sti = getenv("HTTP_REFERER");
til
$url_sti = $_SERVER["HTTP_REFERER"];
Avatar billede Yesper Nybegynder
13. maj 2003 - 17:45 #11
Det har jeg såmænd prøvet, men uden held

Jesper
Avatar billede htm Nybegynder
13. maj 2003 - 17:49 #12
Lyder mærkeligt at der skulle være forskel på dette i forskellige browsere!

Det er præcist det samme testmiljø du har sat op, hvor du klikker på de samme link?
Avatar billede Yesper Nybegynder
13. maj 2003 - 18:31 #13
Min htacess ser ud som følger:
ErrorDocument 401 http://minside.dk/redirect.php
ErrorDocument 403 http://minside.dk/redirect.php
ErrorDocument 404 http://minside.dk/redirect.php
ErrorDocument 500 http://minside.dk/redirect.php

Min redirect.php ser ud som følger (for at teste hvad der sendes):
<?php

$st_request_uri = $_SERVER['REQUEST_URI'];
$st_request_http = $_SERVER['HTTP_REFERER'];

echo "REQUEST_URI ";
echo $st_request_uri;
echo "<br>";
echo "HTTP_REFERER ";
echo $st_request_http;


Se www.team-m.biz/what_ever_you_want

for at se hvad der sker,.......

Jesper
Avatar billede Yesper Nybegynder
13. maj 2003 - 18:35 #14
HOV jeg glemte at skrive at du skal paste/copy ikke klikke, for så virker det.

Idéen er jo at brugeren skal have mulighed for at skrive sit brugernavn efter .dk

Jesper
Avatar billede htm Nybegynder
13. maj 2003 - 18:43 #15
Ville lave det helt anderledes....

Hvis du nu lavede det sådan at dit fejldokument hed 404.php og lod dette gå udfra REQUEST_URI i stedet for at lave et script der henter request.uri og så redirecter...!

Forøvrigt skal du lave dit errordokument ved 401 om, da det ikke må være en ekstern adresse! lav den i stedet med den fulde sti!
Avatar billede Yesper Nybegynder
13. maj 2003 - 18:51 #16
UPS Lave det?? - GERNE men hvordan ville du gøre ??

Ris/ROS modtages gerne og spark i den rigtige retning ligeså

Jesper
Avatar billede htm Nybegynder
13. maj 2003 - 18:58 #17
Hov nærlæste lige dit eksempel som du skrev her til sidst, det fungerer jo præcis som det skal!

REQUEST_URI = det du nu har skrevet i adresselinien
og
HTTP_REFERER = indeholder den sti man kommer fra!, hvis man klikkede på dit link her virkede det fint, skrev http://www.eksperten.dk/spm/351815 og hvis du copy paster det ind er den tom fordi at der ikke er noget link til :-)
Avatar billede Yesper Nybegynder
13. maj 2003 - 19:08 #18
Yep det fungerede som det skulle, men jeg fik forkerte svar i mine variabler,.....

HTTP_REFERER indførte jeg fordi REQUEST_URI ikke gav det jeg ønskede, men det gjorde det i IE5 på MAC,..

Da jeg primært bruger IE5 (Macintosh OSX) gik der et stykke tid inden jeg opdagede fejlen,....

NU har jeg dog selv fundet ud hvorfor jeg ikke fik hvad jeg ønskede --- fejlen lå i .htacess-filen

ErrorDocument 404 http://minside.dk/redirect.php  blev ændret til: ErrorDocument 404 /redirect.php

og så kørte det uden problemer

Mange tak for den store interesse, Problemet er nu løst,......
Jesper
Avatar billede Yesper Nybegynder
13. maj 2003 - 19:08 #19
Spørgsmålet LUKKET
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
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

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