Variables de session [Résolu]

Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
- - Dernière réponse : cs_Aaron
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
- 20 juin 2007 à 00:44
Bonjour,

Je récupère des valeurs d'une table d'une base de données de la façon suivante :
 

$req mysql_query("SELECT * FROM Users WHERE Login '$iden' AND $Password = '$pwd'");
$data = mysql_fetch_assoc($req);




J'aurais aimé savoir s'il existe une fonction, ou à défaut une méthode pour créer des variables de session sans avoir à écrire 50 fois quasiment la même ligne :


$_SESSION['login'] = $data['Login'];
$_SESSION['pwd'] = $data['Password'];
$_SESSION['or'] = $data['or'];


...

$_SESSION['var50'] = $data['var50'];




J'ai entendu parler d'une fonction LIST, mais je ne sais pas comment l'utiliser ni même si elle serait utile dans ce cas de figure.

Merci d'avance pour votre aide.
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
3
Merci
Salut,

"
Mieux vaut t-il faire une connexion à la base de données à chaque fois plutôt que d'avoir une 20e de variables de session?
"

Franchement, je pense qu'il vaut mieux interroger ta base ! Ben oui, sommes-toutes, une base de données est faite pour ça.... non ?
Mais pour être plus clair :
Tes variables de session sont enregistrées dans des fichiers textes. Pour les écrire, PHP doit "linéariser" les variables (cf la fonction serialize) + ouvrir le fichier de l'utilisateur actuellement identifié + écrire dedans. De plus, tu auras un fichier texte par utilisateur... Si 1000 utilisateurs sont connectés, 1000 fichiers. Pour finir, régulièrement PHP vérifie la date de péremption des fichiers de sessions, afin de les détruire.

Pour la base de données : les données sont dans un et un seul fichier (par base... enfin ça dépend du moteur). Elles y sont inscrites de façon optimale (binaire, compressé). Ces fichiers contiennent une mécanique d'indexation pour trouver rapidement les données. Et pour finir, d'outils pour retrouver ces données, les stocker en mémoire (hors de la mémoire de PHP).

Bref, une base de données est exactement faite pour supporter des interrogations à outrance ! Les sessions ne sont là que pour conserver des données périssables et contextuelles à un utilisateur précis...


J'espère avoir répondu à ta question

A+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de J_G
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
0
Merci
Salut,


tu cherches certainement après "foreach" :
foreach ( $data as $clef => $valeur ) $_SESSION[$clef] = $valeur;

Mais je ne trouve pas très "propre" de stocker autant d'info en session... M'enfin, c'est toi qui voit.

A+
Commenter la réponse de J_G
Messages postés
98
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
16 mars 2009
0
Merci
Je ne suis pas sur de comprendre le soucis, mais peut etre que si tu mettez toutes tes variables de session dans uns seule et unique  page et que, quand tu en a besoin, au lieu de tout retaper tu appels ta page qui contient tous les champs par une inlusion.

Par exemple :

session_variables.php :
$_SESSION['login'] = $data['Login'];
$_SESSION['pwd'] = $data['Password'];
$_SESSION['or'] = $data['or'];
...
$_SESSION['var50'] = $data['var50'];

pages_ou _tu_as_besoin_de_ces_variables.php :
include 'chemin/session_variables.php';

Encors une fois je ne suis pas sur d'avoir bien compris ton probleme, mais si c'est bien ca alors tant mieux ^^
Commenter la réponse de setasan9
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
0
Merci
Bonjour,

Merci à vous deux d'avoir répondu.

@J_G : Mieux vaut t-il faire une connexion à la base de données à chaque fois plutôt que d'avoir une 20e de variables de session?

@Setasan9 : Il suffit de faire session_start(); et d'otenir les variables via $_SESSION['quelquechose']. Une fois les variables enregistrées, plus besoin de les définir... Pas besoin de passer par un fichier intermédiaire je pense.
Commenter la réponse de cs_Aaron
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
0
Merci
Hello,

Mon herbegeur (OVH) accepte 10 connexions simultannées à la base de données. Cela suffit-il pour l'interroger à outrance?

En tout cas, merci pour tes réponses.
Commenter la réponse de cs_Aaron