2016-06-02 1 views
0

Ich dachte, es sollte serverseitig sein und dies sollte nicht zu unterschiedlichen Verhaltensweisen führen, abhängig vom Browser.PHP-Code leer in Chrom und Werte in Firefox zurück, wie erforsche ich warum?

Der folgende Code wird als null ausgewertet, während er in firefox Daten enthält, die später in einer Tabelle verarbeitet werden.

$History = (isset($_SESSION['History']) ? $_SESSION['History'] : null); 

So wie ein Schnelltest Ich habe

getan
printf("<p>Variable history%s", $History); 

, die die folgenden in Firefox zurück:

Notice: Array to string conversion in /website/History.php on line 92 
Variable historyArray 

Während in Chrom nur gibt es null aparently:

Variable history 

Nur um zu klären, habe ich nicht Ein Problem, dass die Variable ein Array ist (das heißt, das obige war nur ein Debug-Test) Ich habe ein Problem damit, dass die Variable leer ist. Es wird nur im privaten Modus repreducable in Firefox gemacht, aber ich sehe nicht, warum der Unterschied in Chrom im normalen Modus ist, während Cookies aktiviert sind.

Anfangs verwendete ich (! Isset ($ _ SESSION)) session_start(); aber entweder mit dem oder session_start(); ändert dieses Ergebnis nicht.

+0

Haben Sie in Chrome Cookies deaktiviert? – Archer

+1

Aktivieren Sie Cookie in Ihrem Chrom, dann kann es funktionieren –

+0

Cookies sind aktiviert – Umar

Antwort

1

Sie versuchen gerade, 2 Probleme zu lösen: was passiert mit der Sitzung und was ist in der $ Geschichte. Sie haben uns nichts darüber gesagt, wie das letztere bevölkert ist.

Der erste Schritt, den Sie zum Debuggen von PHP-Problemen unternehmen sollten, ist sicherzustellen, dass Fehlerberichte oder Logging aktiviert sind und ob PHP Fehler meldet. Dass Sie in Ihrem Beitrag eine Warnung gemeldet haben, bedeutet, dass Sie darüber informiert sind.

Für Sitzungen, weil sie persistent sind, sollten Sie ein kleines Skript erstellen, um die aktuelle Sitzung zurückzusetzen - dann können Sie die Sitzung zurück in einen bekannten Zustand durch Zugriff in Ihrem Browser, z.

<?php 
error_reportling(E_ALL); 
session_start(); 
print "<pre>" . var_export($_SESSION, true) . "</pre>"; 
if (count($_GET)) { 
    $_SESSION=array(); 
    print "session reset"; 
} 

Sie sollten auch ein Werkzeug werden, das Sie die Anfrage und Antwort-Header sehen können, so dass Sie leicht Dinge wie die Caching-Anweisungen und Namen/Werte von Cookies überprüfen können.

schließlich hier das Problem scheint mit der Bevölkerung von $ _SESSION [ ‚Geschichte‘] zu sein, aber Sie sollten diese überprüfen Sie mit einem einfachen sitzungsbasierten Skript:

<?php 
session_start(); 
if (!$_SESSION['test']) { 
    $_SESSION['test']=1; 
} 
print "iteration: " . $_SESSION['test']++; 

Sobald Sie zufrieden sind, dass die Sitzungsbehandlung hat nichts mit dem Problem zu tun, und Sie sehen nicht die Auswirkungen von vorherigen Schritten im Debuggen. Sehen Sie sich an, wie $ _SESSION ['History'] aufgefüllt ist (Hinweis, verwenden Sie var_export ($ x, true) oder serialize ($ x) und nicht nur printf, um den Wert zu sehen).

Verwandte Themen