PHP Problem mit Links bzw. laden der Seite

Taker

Enthusiast
Thread Starter
Mitglied seit
23.10.2008
Beiträge
155
Hallo Zusammen,
habe ein kleines Problem bzw. stehe gerade auf dem Schlauch.

Ich arbeite an einer Webanwendung, welche die Inhalte dynamisch generiert und z.B. auch Marker ersetzt, sodass in den Templates zur Ausgabe kein PHP Code vorhanden ist.

Das Loginsystem basiert auf Sessions, dementsprechend gibt es auch eine logout.php, welche die Session zerstört, Cookie löscht.. und mit header("Location: http://example.org") auf die Startseite / Login weiterleitet.
Der Logout funktioniert auch wenn ich example.org/logout.php in die Adresszeile eingebe wie gewünscht, wenn ich allerdings einen ganz normalen Link, also <a href="logout.php">Logout</a> benutze, funktioniert es nicht.. es erscheint nur eine weiße Seite (PHP Fehlermeldungen sind aktiviert!), wenn ich dann noch einmal F5 drücke, lande ich wie gewünscht auf der Startseite/Login..

Was übersehe ich da? Hat jemand einen Anhaltspunkt für mich?
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Setze mal vor
header("Location: http://example.org");
ein
die("sieht man das ? wenn nicht wird die Zeile nicht ausgeführt.");

Dann weist du, ob der Bereich, in dem header(..) steht, überhaupt ausgeführt wird.

Was anderes: werden Fehler wirklich alle angezeigt ?
Dazu nehme ich immer beides mir rein:
error_reporting(E_ALL);
ini_set('display_errors', 1);
Wenn eins fehlt und ini-Einstellungen entsprechend sind, können Fehler trotz error_reporting unterdrückt werden.
 
error_reporting(-1);
ini_set('display_errors', 1); // Fehler anzeigen: 1 für ON, 0 für OFF
ini_set('error_reporting', E_ALL);
ini_set('log_errors', 1); ini_set('error_log', '/log/fehler.log');

habe ich,
"sieht man das ? wenn nicht wird die Zeile nicht ausgeführt." wird jetzt im Quelltext angezeigt, die Seite bleibt allerdings weiß.
Wenn ich wie gesagt manuell in der Browserleiste die logout.php Aufrufe (habe sogar schon den Link des Buttons kopiert und eingefügt) funktioniert..

Achja, wenn ich den Link wieder manuell eingebe, steht der "sieht man das" Text auch da.. das scheint irgendwie ein Browserproblem zu sein? tritt aber sowohl in ff, chrome und iphone/safari auf.
 
Zuletzt bearbeitet:
error_reporting(-1);
ini_set('display_errors', 1); // Fehler anzeigen: 1 für ON, 0 für OFF
ini_set('error_reporting', E_ALL);
ini_set('log_errors', 1); ini_set('error_log', '/log/fehler.log');
lösche das mal alles raus, und ersetze es durch
Code:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$dispErrors = ini_get('display_errors');
$errReport = error_reporting();
var_dump($dispErrors);
var_dump($errReport);
?>
Da müsste dann
Code:
string(1) "1"
int(30719)
ausgegeben werden. Wenn nicht kann es sein, dass ini_set() und/oder error_reporing() setzen nicht erlaubt ist, und daher keine Fehler angezeigt werden.
Wo führst du das ganze aus ? Wenn es auf einem richtigen Host ist, dann kann bzw. sollte das sogar so sein.
Richte dir in dem Fall mal eine Entwicklungsumgebung ein (XAMPP, oder eigenen Host in einer virtuellen Maschine) und probier, ob dann Fehler ausgegeben werden.

wird jetzt im Quelltext angezeigt, die Seite bleibt allerdings weiß (..) steht der .. Text auch da... das scheint irgendwie ein Browserproblem zu sein?
Was ? Ich konnte den Sätzen jetzt nicht wirklich entnehmen, was passiert. Schreib es lieber ganz kurz & klar nochmal auf.

Und was die Browser anzeigen ist relativ irrelevant. Entscheidend ist, was im Quelltext ausgegeben wird.
Stelle zudem durch mehrmaliges F5 drücken oder abändern der Ausgabe sicher, dass die Seite auch tatsächlich neu und nicht aus dem Browsercache geladen wird.

Ergänze mal noch eine Zeile nach header(..), und schaue ob die ausgeführt wird.
Code:
var_dump("diese Zeile vor header wird wohl noch angezeigt ?");
header("Location: http://example.org");
die("aber wird die Zeile danach auch noch ausgegeben ?");
 
Zuletzt bearbeitet:
Code:
string(1) "1"
int(30719)

Notice: Undefined index: logged_in in /var/www/... ../classes/class.frontend.php on line 85

Erhalte ich jetzt ;)

Code:
 session_start(); 
session_destroy();
var_dump("diese Zeile vor header wird wohl noch angezeigt ?");
header("Location: http://example.org");
die("aber wird die Zeile danach auch noch ausgegeben ?");
Steht nun in meiner logout.php, jetzt tut sich bei klick auf den Link allerdings garnix mehr, bei einem freundlichen F5 ist er dann ausgeloggt..
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh