PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Newbieprob] Will 404-Abfangscript basteln & komme nicht weiter...


TigerDE2
23.05.2002, 17:19:44
Hallo!
Vorne weg: Ich bin ein kompletter Newbie. ;)
Ich will mit PHP ein 404-Fehler-Abfangscript basteln.
Wenn es einen 404-Fehler gibt, leitet die .htaccess den Surfer automatisch auf das Fehlerdokument weiter.
Dort soll die Seite, von der man kommt, und die angeforderte Seite ausgegeben werden.
<?php echo "$referer" ?>
Für das "auslesen der History" klappt prima, aber die angeforderte Seite wird einfach nicht angezeigt.
Entweder, ich bekomme dashier angezeigt:
REQUEST_URI
oder den Pfad der 404-Fehlerdatei selber (errors/404.php).
Ich hab's bisher damit probiert:
<?php echo "$REQUEST_URI" ?>
Was mache ich falsch und wie bekomme ich das richtig hin?
Danke im Voraus. :)
gruß
Christian

|Coding
23.05.2002, 18:44:34
hi TigerDE2,

Willkommen im SELFPHP Forum.

so zu deiner frage:

die .htaccess:

ErrorDocument 404 http://www.deineURL.de/error.php?id=404
.
.
.


das script error.php:

switch ($id)
{
case 404:
$msg = "Error 404: Datei nicht gefunden";
break;
default:
$msg = "Unbekannter Fehler";
break;
}
<html>
<head>
<title><? echo $msg; ?>
</head>
<body align="center">
<h1><? echo $msg; ?>, SORRY :-)</h1><br>
<br>
<a href="javascript:history.back();">Zurück</a>
</body>
</html>


die .htaccess und das script kannst du noch an deine bedürfnisse verändern und auch die fehler erweitern, z.b. für fehler 403 oder 401...

ich hoffe ich konnte dir helfen.

TigerDE2
23.05.2002, 21:33:52
Hi!
Danke erstmal, aber nein, das war's nicht.
Die Datei, die ich schon habe, liegt hier:
http://www.spicken.de/support/errors/404.php
Der Inhalt des .htaccess-Files sieht so aus:
ErrorDocument 404 http://www.spicken.de/support/errors/404.php
Und der Quellcode des Fehlerfiles (der wichtigste Teil) sieht so aus:
<?
$referer = getenv("HTTP_REFERER");
?>
<script language="JavaScript">
<!--
Objektname = new Date();
with (document) {
write('<br><b>Folgendes wird übermittelt:</b><br><br>');
write('Letzte Besuchte Site: <i>'+document.referrer+'</i><br>');
write('Angeforderte Site: <i><?php echo "$REQUEST_URI" ?></i><br>');
write('Browserversion: <i>'+navigator.userAgent+'</i><br>');
write('Sprache: <i>'+navigator.language+'</i><br>');
write('aktuelle Zeit: <i>'+Objektname+'</i><br>');
}

document.write('<input type="hidden" name="angeforderte Site" value=" <?php echo "REQUEST_URI" ?> ">');
document.write('<input type="hidden" name="History by JS" value="'+document.referrer+'">');
document.write('<input type="hidden" name="History by php" value=" <?php echo "$referer" ?> ">');
document.write('<input type="hidden" name="Browser" value="'+navigator.userAgent+'">');
document.write('<input type="hidden" name="Sprache" value="'+navigator.language+'">');
document.write('<input type="hidden" name="Datum" value="'+Objektname+'">');
document.write('<br><b>&nbsp;Link:&nbsp;</b>&nbsp; <input onClick="this.focus();this.select();" type="Text" name="defekter Link" value="Gib hier bitte den defekten Link an, auf den Du geklickt hast, z.B. &gt;&gt;Impressum&lt;&lt;" >');
document.write('<br><b>e-Mail:</b> <input onClick="this.focus();this.select();" type="Text" name="email" value="Deine E-Mailadresse" >');
//-->
</script>

Mein Problem ist:
Wenn ich die Site www.spicken.de/support/404 aufrufe, wird die PHP-Page geladen.
Anstatt aber hier
'Angeforderte Site: <i><?php echo "$REQUEST_URI" ?>
/support/404/ auszugeben, gibt das Script immer
http://www.spicken.de/support/errors/404.php (also den Pfad zur Fehlermeldungspage selbst) oder REQUEST_URI aus. (Es sollte aber die angeforderte Page hier rein.)
Wie kann ich das ändern?
gruß
Christian
P.S.: Wie ich das ungefähr meine, kann man auch auf www.icq.com/404 sehen. ;)

|Coding
23.05.2002, 21:43:54
hi,

ersetz:

<?php echo "$REQUEST_URI" ?>

mal durch:

<?php echo $HTTP_SERVER_VARS['REQUEST_URI']; ?>


dann sollte es klappen, also bei mir geht es.

TigerDE2
23.05.2002, 22:40:57
Hi!
Nein, leider nicht.
Er gibt immer noch /errors/404.php aus.
An was kann das denn liegen?
Christian

|Coding
23.05.2002, 23:00:06
hmmm,

jetzt weiß ich wo das problem liegt. das funktioniert deswegen nicht, weil die error seite is ja, in dem moment wo ein fehler erzeugt wird, die angeforderte uri. nur wie man das ungehen kann, hmmm..... weiß ich jetzt auch nicht, aber vielleicht kann man da ja was mit js, also mit "history.back()" machen. mal überlegen...

Nev
24.05.2002, 11:16:43
Hi @ll

Das Error-Handler von mir funkt sehr gut.
Es besteht aus folgenden Dateien:
.httaccess -> liegt im Root

error.php -> kann irgendwo liegen (in diesem Fall auch im Root)


ErrorDocument 401 /error.php?error=401
ErrorDocument 500 /error.php?error=500
ErrorDocument 403 /error.php?error=403
ErrorDocument 404 /error.php?error=404



<?
// Config
$title = ""; // Titel deiner Page
$admin_mail = ""; // Admin -Email
$admin_name = ""; // Admin -Name
$sender_name = ""; // Titel des Mails
// Ende Config


$location=getenv("REDIRECT_URL");
$host=getenv("HTTP_HOST");
$remote=getenv("REMOTE_HOST");
$referer=getenv("HTTP_REFERER");

switch ($error)
{
case 401:
$msg = "Zugang verweigert";
break;

case 403:
$msg = "Zugang verweigert";
break;

case 404:
$msg = "Datei nicht gefunden";
break;

case 500:
$msg = "Script ERROR";
break;

default:
$msg = "Umbekannter Fehler";
break;
}
?>
<HTML>
<BODY>
<H1><? echo $msg; ?></H1><BR>
<A HREF="javascript:history.back();">Einen Schritt zurück</A><BR>
<A HREF="<?= $SERVER_NAME; ?>">Zur Homepage</A><BR>
</body>
</html>
<?

mail("$admin_name <$admin_mail>",$sender_name,"Report:
Error: $msg
Location: $location
Visitor: $remote
Referer: $referer", "From: $sender_name <$admin_mail>
Content-type: text/plain
X-Mailer: PHP/" . phpversion());
?>



Was WICHTIG IST!!

Im .htaccess file wird der Pfad zur Error-Datei, vom HTTP-Root erg angeben.

TigerDE2
24.05.2002, 21:05:51
Hi!
Danke, aber das hilft auch nicht... :'(
Die PHP-Datei: http://www.planet-school.de/errors/404.php
Eine Datei mit einem direktlink auf die 404er und einer ins leere:
http://www.planet-school.de/errors/test.htm
Der .htaccess-inhalt:
ErrorDocument 404 /errors/404.php
Der geänderte Code:
$location=getenv("REDIRECT_URL");
und
write('Angeforderte Site: <i><?php echo "$location" ?></i><br>');
Und es geht immer noch nicht... :(((
Es liefert ein Leerzeichen (wenn überhaupt...)
gruß
chris
Kann das evt. an den Servereinstellungen oder an der PHP-Version liegen?

TigerDE2
24.05.2002, 21:06:53
HEUREKA!!!
Der server hat sich's gerade anders überlegt! Er macht's!!! *jubel* *freu* :)
DAAAAAANNNNKKKEE!!!!!!!!!!!! ;)

|Coding
05.06.2002, 21:15:53
hi,

sorry aber dein script funzt auch nicht. ich will die fehler url habe, aber kriege immer die url vom script :-(

siehe: http://forum.isp2day.de/showthread.php?s=&threadid=1539