Se connecter avec
S'enregistrer | Connectez-vous

Variables cachées et session PHP

Dernière réponse : dans Programmation

Salut tout le monde,

J'ai un souci avec un questionnaire de plusieurs pages. Actuellement, j'utilise une session (avec cookie de session) pour pouvoir passer d'une page à l'autre. Je voulais essayer de récupérer également les utilisateurs qui n'autorisent pas les cookies. J'ai utilisé alors l'identifiant de session dans l'url, soit:

<form name="enquete" id="enquete" method="post" action="pageX.php?<? echo SID ?>">

Comme j'ai beaucoup de variables sur chaque page, plutôt que les définir toutes manuellement, j'utilise un script du genre (je simplifie):

foreach ($HTTP_POST_VARS as $key=>$value) {
$query = "UPDATE data SET $key=$value WHERE id_pers=$id_pers";
mysql_query($query);
}

Et c'est là où ça coince, parce que quand je passe l'identifiant de session par l'url, une variable cachée (hidden) est ajoutée à mon formulaire et je dois alors définir dans ma base une variable PHPSESSID (OK, je peux l'ajouter) et une variable *ayant pour nom la session* (et là, difficile de l'ajouter puisque ça change à chaque coup). En récupérant tout avec $HTTP_POST_VARS, je récupère aussi ces variables cachées.

Qqn a-t-il un truc? Ou une manière plus élégante de récupérer toutes les variables sauf les "hidden"?

Merci,
Ulysse

Autres pages sur : variables cachees session php

Lassé par la pub ? Créez un compte

1/ OK, sorry...
2/ Encore sorry (bouquin de 2001... faut que j'investisse!)

3/ quelques explications plus détaillées...

- idée de base: chaque page de l'enquête comporte une quinzaine de questions (donc de variables) et ces questions sont susceptibles de changer pour la prochaine enquête, mais je suis paresseux et je n'ai pas envie de changer ma table de données à chaque voyage

- donc, je récupère toutes les variables d'un coup et je les insère dans ma table, quelque soit leur nombre (une de plus, une de moins...)

- mais si l'utilisateur refuse les cookies, je dois utiliser l'identifiant de session pour passer d'une page à l'autre (du moins c'est ce que j'ai compris); et là, sans que je ne lui demande rien, il m'ajoute un champ caché:
  1. <form name="enquete" id="enquete" method="post" action="page2.php?PHPSESSID=631c92d5fabb87a8176cc4b163180231">
  2. <input type="hidden" name="PHPSESSID" value="631c92d5fabb87a8176cc4b163180231" />
  3. <input name="Submit" type="submit" value="Commencer le questionnaire" />
  4. </form>

... le champ "hidden" de la ligne 2 n'étant pas dans mon code, mais seulement dans la page qui s'affiche. Et il me met un message d'erreur en passant à la page suivante:
Citation :

Unknown column '631c92d5fabb87a8176cc4b163180231' in 'field list'


J'en déduis qu'il veut enregistrer une variable qui a le nom de la session...

Alors soit je définis toutes les variables à la main (près de 80 :(  ), soit il y a un truc pour ne pas récupérer dans le $_POST les variables cachées, soit encore il y a une manière plus élégante de travailler avec une session sans cookie de session...

Fus-je plus clair?
Merci!
Ulysse

ok !
donc si php rajoute lui meme le champs hidden, tu n'as pas besoin de le rajouter toi meme dans le action de ta <form>

deuxiemement, faut juste que dans ta boucle que tu mettes quelque conditions supplémentaires...

  1. foreach ($_POST as $key=>$value) {
  2. if($key == "PHPSESSID" or $key == "Submit") continue; // on ne traite pas ces données
  3. $query = "UPDATE data SET $key=$value WHERE id_pers=$id_pers";
  4. mysql_query($query);
  5. }

...
  1. if($key == "PHPSESSID" or $key == "Submit") continue; // on ne traite pas ces données


Ah, ben comme ça, ça marche au poil!! Et ça donne des idées pour améliorer le reste (hem, quelques variables que je n'aurais pas eu besoin de créer... ;)  ) C'est chouette de se sentir progresser... Encore merci!
Ulysse
Lassé par la pub ? Créez un compte