Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/04/2006, 14h54   #1
Invité de passage
 
Inscription : juillet 2005
Messages : 12
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 12
Points : 4
Points : 4
Par défaut Variable $_SESSION automatisé

Bonjour,

Je réalise un formulaire de type récensement (dépliant de trois pages écrit très petit) en php/mysql pour l'installer sur un tablet pc pour automatiser le tri des résultats.

Pour passer mes variables en session, j'ai adopté et adapté ce bout de code déconseillé pour passer les register global à off.


Code :
1
2
3
4
foreach( $_REQUEST as $a => $b)
{
$$a = $b;
}
en

Code :
1
2
3
4
foreach( $_POST as $a => $b)
{
$_SESSION[$a] = $b;
}
Dans la pratique après avoir testé les retours du tableau $_SESSION, ça marche mais y a-t-il des désavantages à faire de la sorte en gardant à l'esprit qu'il s'agit d'une application en local ?

Merci pour les conseils.

Bruno
mangafan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 14h56   #2
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Quel est l'intérêt ?
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 15h03   #3
Invité de passage
 
Inscription : juillet 2005
Messages : 12
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 12
Points : 4
Points : 4
J'ai plus de 200 critères à sauver et je créais plusieurs pages en laissant une option de rectification sur chacune pour l'utilisateur final. De plus certains champs conditionnent l'affichage d'autres champs, je pensais faire comme ça pour éviter de faire à la main chaque champs :

Code :
1
2
3
4
5
$_SESSION["a"] = $_POST["a"];
$_SESSION["b"] = $_POST["b"];
$_SESSION["c"] = $_POST["c"];
$_SESSION["d"] = $_POST["d"];
...
Il y a une contrindication ?
mangafan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 15h20   #4
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Oui. J'en vois au moins une : que tu te fasses écraser une variable de session alors qu'elle ne devrait pas l'être.

Je serais toi je ferais au moins comme ça : (pas testé)
Code :
1
2
 
$_SESSION['registre'] =  array_merge_recursive($_SESSION['registre'], $_POST);
Du coup, tu peux mettre d'autre variables dans ta session :
Code :
1
2
$_SESSION['pseudo'] = ...
$_SESSION['is_admin'] = ...
Et elles ne risquent pas d'être écrasées
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 15h57   #5
Invité de passage
 
Inscription : juillet 2005
Messages : 12
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 12
Points : 4
Points : 4
Superbe, je te remercie beaucoup, je ne connaissais pas cette fonction.

En plus avec cette méthode, j'ai le retour des champs du formulaire sur le quel on a validé, la première méthode me mettant les variables du formualire de changement de style :/ c'était pas top.

Par contre, visiblement ça écrase la tableau à chaque fois, j'imagie qu'un if s'impose ?

Code :
1
2
3
4
5
 
if(isset($_POST["go"])) {
$_SESSION['registre'] = array();
$_SESSION['registre'] = array_merge_recursive($_SESSION['registre']; $_POST);
}
mangafan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 16h08   #6
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Ben je ne sais pas quel est exactement ton besoin, mais j'ai compris comme étant une succession de formulaire dont tu as besoin de garder les valeurs soumises à chaque fois.

Exemple:
Form1 : 'nom', 'prenom'
Form2 : 'age', 'sexe', 'ville'
Form3 : confirmation => 'nom', 'prenom', 'age', 'sexe', 'ville'

L'utilisateur ouvre la session, le registre est vide :
$_SESSION['registre'] = array();

L'utilisateur poste Form1 :
$_SESSION['registre']['nom'] = 'Donald';
$_SESSION['registre']['nom'] = 'Duck';


L'utilisateur poste Form2 , avec array_merge, les valeurs de l'ancien registre sont conservées :
$_SESSION['registre']['nom'] = 'Donald';
$_SESSION['registre']['nom'] = 'Duck';
$_SESSION['registre']['age'] = '20';
$_SESSION['registre']['sexe'] = 'Gros';
$_SESSION['registre']['ville'] = 'Disneyland';


L'utilisateur poste Form3, avec array_merge, les valeurs du registre sont modifiées :
$_SESSION['registre']['nom'] = 'Donald';
$_SESSION['registre']['nom'] = 'Duck';
$_SESSION['registre']['age'] = '18';
$_SESSION['registre']['sexe'] = 'Gros';
$_SESSION['registre']['ville'] = 'Disneyland';

C'est comme ça que je l'ai compris, je peux me fourvoyer.
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 16h22   #7
Invité de passage
 
Inscription : juillet 2005
Messages : 12
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 12
Points : 4
Points : 4
Exact autant pour moi, c'est de ma faute si je créais à chaque fois la tableau avec $_SESSION['registre'] = array(); c'est moi qui l'écrase et non pas la fonction...

Je vais trouver la solution pour ça.

Par contre, tu ne serais pas pourquoi, quand je clique sur le bouton du formulaire du milieu (le questionnaire) le tableau ne prend pas les valeurs du formulaire de gauche (switch pour mes feuilles de style css) ?

Sinon le reste c'est impec.
mangafan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 16h29   #8
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Ma boule de cristal n'a pas su me révéler ton code et ne voit pas de quoi tu parles...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 16h45   #9
Invité de passage
 
Inscription : juillet 2005
Messages : 12
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 12
Points : 4
Points : 4
ça marche en fait c'est ma faute j'ai louché résultat, j'ai confondu $style et $tyle.

Merci pour tout.
mangafan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h43.


 
 
 
 
Partenaires

Hébergement Web