2010-11-06 3 views
5

Avoir le problème suivant dans un panier d'achat PHP.

Une décharge de ma session ressemble à:

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

Le panier a trois boutons:

<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' /> 

chaque fois que j'appuie sur un des boutons, les rechargements de page et fait ce qu'il doit (supprimer ou ajouter un élément) ... mais le tableau de session devient le suivant (en fonction du bouton poussé)

Array ([username] => [email protected] [key] => continueshopping_y) 
Array ([username] => [email protected] [key] => update_y) 
Array ([username] => [email protected] [key] => checkout_y) 

Est-ce que [clé] est un mot réservé? Pourquoi la valeur de $ _SESSION ['key'] serait-elle écrasée à partir d'un formulaire qui POST tout simplement? Ceci est un problème pour notre projet car nous stockions des identifiants de compte d'utilisateur dans [clé], mais la valeur est écrasée chaque fois qu'un bouton est poussé dans le panier.

Le code actuel est assez long, et l'afficher ici ne serait pas pratique. Je ne saurais pas quoi publier, car le panier n'interagit jamais avec la session autrement que pour attraper le session_id(). Vraiment, je me demande si quelqu'un a vécu quelque chose de similaire. Je ne peux pas recréer le problème sur mon serveur local (PHP5), n'existe que sur le serveur live (PHP4).

Merci d'avance.

Répondre

1

Non, la clé n'est pas réservée; il doit y avoir du code réel qui écrase l'entrée. Comme cela dépend de la configuration du serveur, je vous suggère de vérifier le paramètre register_globals et de vous assurer qu'il est désactivé sur les deux serveurs. Continuation_y, update_y, checkout_y - lors de l'utilisation d'une image INPUT le navigateur enverra également les coordonnées x & y où l'image a été cliquée

0

Je dirais qu'il ya un certain présent code comme suit:

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

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

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

Changement foreach ($ _POST en tant que valeur de $ key $ =>) pour foreach ($ _POST comme $ key2 => $ value) rend le travail de tout. Donc je suppose que la réponse est une combinaison de la réponse d'AndreKR et la vôtre - la variable clé _POST est mélangée avec la variable clé _SESSION. – Hovvit