2010-11-06 5 views
5

Das folgende Problem in einem PHP-Einkaufswagen.

A Dump meiner Sitzung wie folgt aussieht:

Array ([username] => [email protected] [key] => 1) 

Der Einkaufswagen drei Schaltflächen:

<form name='cartForm' action='cart.php' method='post'> 
<input type='image' value='submit' name='continueshopping' src='x.jpg' /> 
<input type='image' value='submit' name='update' src='y.jpg' /> 
<input type='image' value='submit' name='checkout' src='z.jpg' /> 

, wenn ich eine der Tasten drücken, die Seite neu geladen und das tut, was es muss (dh entfernen oder fügen Sie ein Element) ... aber das Sitzung-Array wird auf folgende geändert (abhängig von der Taste gedrückt)

Ist [Schlüssel] ein reserviertes Wort? Warum sollte der Wert von $ _SESSION ['key'] von einem Formular überschrieben werden, das einfach alles anlegt? Dies ist ein Problem für unser Projekt, da wir Benutzerkonten-IDs in [Schlüssel] gespeichert haben, aber der Wert wird jedes Mal überschrieben, wenn eine Schaltfläche im Einkaufswagen gedrückt wird.

Der eigentliche Code ist ziemlich lang, und es hier zu veröffentlichen wäre nicht praktisch. Ich weiß nicht, was ich posten soll, da der Warenkorb niemals mit der Sitzung interagiert, außer die session_id() zu erfassen. Ich frage mich wirklich, ob irgendjemand Ähnliches erlebt hat. Ich kann das Problem nicht auf meinem lokalen Server (PHP5) neu erstellen, sondern nur auf dem Live-Server (PHP4).

Vielen Dank im Voraus.

Antwort

1

Nein, Schlüssel ist nicht reserviert; Es muss einen tatsächlichen Code geben, der den Eintrag überschreibt.

Da es von der Serverkonfiguration abhängt, würde ich vorschlagen, dass Sie die Einstellung register_globals überprüfen und sicherstellen, dass sie auf beiden Servern deaktiviert ist.

0

confortehopping_y, update_y, checkout_y - Wenn Sie ein Bild INPUT verwenden, sendet der Browser auch die Koordinaten x & y, auf die das Bild geklickt wurde. Meine Vermutung wäre, gibt es einige Code wie folgt vorhanden:

foreach ($_POST as $key => $value) { 
..... 
} 

.... 
Many lines of code later .... 
.... 

$_SESSION['key'] = $key; 
// or, 
session_register('key'); 
+0

Ändern foreach ($ _POST als $ key => $ value) foreach ($ _POST wie $ key2 => $ value) macht alles funktioniert. Also nehme ich an, die Antwort ist eine Kombination aus AndreKRs Antwort und Ihrer - die Schlüsselvariable _POST wird mit der Schlüsselvariable _SESSION verwechselt. – Hovvit

Verwandte Themen