PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehlermeldung webuser unsichtbar machen



Kraemer84
25.06.2010, 13:24
Is das möglich wenn man zb eine fehlermeldung auf seinem webspace hat (was immer mal passieren kann) das dann der webuser net dasteht oder noch besser eine Nachricht kommt wie zb "Es ist ein Fehler aufgetreten bitte benachrichtigen Sie den Support" oder sowas in der art ?? ich find das etwas doof wenn der user liest was bei mir falsch ist...

Parl
25.06.2010, 14:08
Du kannst die Fehleranzeige auch ausschalten, entweder direkt in der php.ini oder mit folgendem


ini_set('display_errors','Off');

Oder noch besser in die session.lib.php ganz unten:


if ($_SESSION['uid'] != $admin_id) {
ini_set('display_errors','Off');
}


Dann bekommt nur noch der Admin die Fehler angezeigt, normale User nicht.

Erschwert dann natürlich die Fehlersuche, da ein normaler User diese ja nicht mehr sieht und dich somit auch nicht benachrichtigen kann.

MFG

Kraemer84
25.06.2010, 14:47
wenn ich das jetzt so einstellen will das nicht nur ich das seh sondern auch moderatoren dann änder ich das in


if ($_SESSION['uid'] != 123456,23456,65431;) {
ini_set('display_errors','Off');
}

?

also erste sollte dann meine uid sein und die weiteren dann von moderatoren

didith1207
25.06.2010, 16:45
sorry aber dein code passt nicht was soll das ; innerhalb der klammer?

du könntest es so machen:



if ($_SESSION['uid'] != '123456' OR $_SESSION['uid'] != '23456' OR $_SESSION['uid'] != '3456') {
ini_set('display_errors','Off');
} oder über ein array(ungetestet)


$mods = array("123456", "23456", "3456");
if (!in_array($_SESSION['uid'],$mods)) {
ini_set('display_errors','OFF');
}

jpwfour
25.06.2010, 17:21
Im 1. Code gehören statt den ORs ANDs rein?
Im 2. ein in_array(), würde ich sagen, damits korrekt funktioniert.

didith1207
25.06.2010, 17:43
zu punkt2 ja habs schon gesehen...

zu 1.. hmm ANDs ?

Parl
25.06.2010, 17:59
AND geht nicht, man hat ja nur eine uid, denke das war ein Missverständnis. :-)

jpwfour
25.06.2010, 19:26
if ($_SESSION['uid'] != '123456' && $_SESSION['uid'] != '23456' && $_SESSION['uid'] != '3456') {
ini_set('display_errors','Off');
}

Bei OR müsste ein User, damit der Gesamtausdruk nicht zu true auswertet, die uid 123456 haben. Hat er 23456, wertet der erste Ausdruck schon zu true aus, 1x true reicht bei OR Verknüpfung, somit könnte man sich in dem Fall den Rest sparen. && statt AND nur, damit nicht jedesmal alle 3 Ausdrücke ausgewertet werden, da bei AND sofern der 1. zu false auswertet, die Anderen nicht mehr betrachtet werden müssen.


$mods = array("123456", "23456", "3456");
if (!in_array($_SESSION['uid'],$mods)) {
ini_set('display_errors','OFF');
}

didith1207
25.06.2010, 19:58
achsoo nun schnall ich es da er nacheinander fragt ob die klammid nicht passt

Sebmaster
25.06.2010, 20:59
http://php.net/manual/de/function.set-error-handler.php

Wäre auch eine Möglichkeit:wink:

marcaust
26.06.2010, 04:15
Wenn du zugriff auf die php.ini hast, ist das hier ganz interessant:
http://johannes-ruthenberg.de/php-errorlog

Einmal die Fehlermeldungen für den User abschalten aber in einer eigenen Log Datei speichern.
Das hat ganz einfach den Vorteil das man in der Log jederzeit nachschauen kann welche Fehler aufgetreten sind und sich nicht auf Zufall und Usermeldungen verlassen muss.

Eine Alternative (sofern man nur 1 php.ini für mehrere Domains hat) ist das über die .htaccess zu steuern:
http://www.disipal.net/php/23-advanced-php-error-handling-via-htaccess.html