Die PHP-Sitzung ändert sich unerwartet in der if-Anweisung und ignoriert den echo-Befehl

8

Ich setze $ _SESSION ['showroom'] auf 'aktiv', wenn eine bestimmte Seite in Wordpress angezeigt wird:

%Vor%

Ich setze dann 2 Arrays von Seiten, gegen die geprüft werden soll. Wenn die nächste angezeigte Seite NICHT in einem dieser Arrays ist, wird $ _SESSION ['showroom'] in 'inactive' geändert.

%Vor%

Die if-Anweisung funktioniert die meiste Zeit, aber manchmal wechselt mein $ _SESSION ['showroom'] zu inaktiv, obwohl eines der Arrays wahr ist! Nach mehreren Teststunden kann ich nicht feststellen, wo das Problem liegt. Wenn ich die beiden Teile der if-Anweisung ausspreche, dann gebe ich IMMER 2 Wahrheiten oder 1 richtig + 1 falsch, aber niemals 2 falsch:

%Vor%

Was fehlt mir hier?

Vielen Dank im Voraus für jede Hilfe!

BEARBEITEN: Habe die Tests fortgesetzt und die folgende Anomalie gefunden:

%Vor%

Die if-Anweisung ändert $ _SESSION ['showroom'] in 'inactive', gibt aber NICHT 'SET TO INACTIVE' aus!

Hier passiert etwas Seltsames!

    
Richard Tinkler 25.02.2016, 19:16
quelle

3 Antworten

7

Problem gelöst. Mein Code war in Ordnung. Zwei fehlende Bilder haben WordPress zum Absturz gebracht. Dauerte 10 Stunden um herauszufinden, aber ich habe es gefunden. Danke an alle für ihre Hilfe.

    
Richard Tinkler 01.03.2016, 22:26
quelle
2

Sie können Folgendes versuchen:

%Vor%

Bearbeiten: Versuchen Sie es weiter zu zerlegen ... ähnlich Ihren Beispielen

%Vor%

Dann sehen Sie, ob wir ein Ergebnis mit not in templates,not in ids, erhalten, aber nicht mit einem abschließenden not in both

    
Dave 25.02.2016 19:28
quelle
0

Das Problem ist rein logisch. Schauen wir uns diese Aussage an:

%Vor%

Was bedeutet "Wenn die Vorlage nicht gültig ist AND Seite ist nicht gültig"

Dies bedeutet, dass beide Anweisungen erfüllt sein müssen, um die Sitzung als inaktiv zu markieren. Was ist, wenn die Vorlage in Ordnung ist, aber die Seite nicht gültig ist? Das sollte definitiv auch als inaktiv markiert werden.

Durch Ändern der Anweisung in "Wenn die Vorlage nicht gültig ist ODER Seite ist nicht gültig" verdecken wir die ungültigen Fälle. Weil jeder von ihnen als ein ungültiger Zustand gilt und daher nur einer von ihnen falsch sein muss, damit alles falsch ist. (die OR-Aussage)

Also Code-weise wäre es

%Vor%

Und Sie sind eingestellt.

Als und Zusatz. Ich würde den Code strukturieren, wie Sie bemerkt haben, funktioniert. Was ist logischer. Das bedeutet, dass es als inaktiv markiert wird, wenn es als inaktiv behandelt werden soll, in allen anderen Fällen als "aktiv". Oder umgekehrt.

    
Eric 01.03.2016 15:33
quelle

Tags und Links