Variables de session

Variables de session - PHP - Programmation

Marsh Posté le 06-03-2004 à 14:07:28    

Bonjour, je m'attaque au session depuis peu et j'ai un problem de récupération de variables....
Voila mon script de la page index.php qui utilise les sessions :

Citation :

$login = $_GET[log_p];
$pass = $_POST[pass];
session_start();
session_register("pass" );
session_register("login" );
header("Location: tech.php?".session_name()."=".session_id());
exit();

La variable log_p est passé en parametres dans l'url et la variable pass viens d'un formulaire.
Si j'ai bien suivit le fonctionnement des sessions, avec ce bou script, j'enregistre les variables login et pass dans la session...no?  :heink:  
 
Ensuite dans la page tech.php, j'ai ce bou de script en haut de page :

Citation :

session_start();
echo session_id();
echo session_name();
echo $login;
echo $pass;
if($login != "tech" || $pass != "tech" ) {
 echo '<br><font face="Verdana" size="2">Vous n\'êtes pas autorisé à afficher cette page !</font>';
exit();
}


Normalement les variables login et pass devrai contenir ce que je leur ai mis dans la page précédente. Et ben non, il n'y a strictement rien dans les deux variables............ :cry:  
 
Si vous pouviez m'éclairer sur ce point, j'en serai ravi.
Merci ;)


Message édité par j0k3r_n0ir le 06-03-2004 à 14:09:41

---------------
Licence Professionnelle Multimedia Internet Webmaster | Des articles, des aides, des scripts .... le tout disponible sur mon site.
Reply

Marsh Posté le 06-03-2004 à 14:07:28   

Reply

Marsh Posté le 06-03-2004 à 14:17:37    

Bon alors 2 choses :
* sous PHP, depuis un peu de temps maintenant, les variables globales ne sont pu autorisées par défaut. C'est-à-dire qu'un truc que tu enregistreras en session sous le nom de "plouf", tu ne pourras pas le récupérer avec $plouf. Idem pour tout ce qui est POST, GET, etc...
* les sessions ne sont plus supportées via session_register(), etc... mis en tapant directement dans le tableau $_SESSION. Tu le fais très bien dans ton code avec $_POST, donc fais pareil pour $_SESSION.
 
Ex :
$login = $_GET[log_p];
$pass = $_POST[pass];
session_start();
$_SESSION["pass"] = $pass;
$_SESSION["login"] = $login;
 
Et pour la lecture :  
echo $_SESSION["login"];
 
(NB si je peux me permettre : stocker le password, même en session, c'est pas terrible et j'vois pas l'intérêt ;) )


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 06-03-2004 à 14:20:45    

Ah oui c'est vrai je l'avais vu ne plus l'histoire du $_SESSION, mais je m'en rappelé plus :p
 
Pour ton NB, je débute dans les sessions, alors je fait comme on pourrai dire, des tests....
Mais en réfléchissant, c'est vrai que je n'aurais besoin que de stocker le login en session. ;)


---------------
Licence Professionnelle Multimedia Internet Webmaster | Des articles, des aides, des scripts .... le tout disponible sur mon site.
Reply

Marsh Posté le 06-03-2004 à 15:54:57    

Nouveau problème :
Je n'arrive pas détruire la session....
Je fais bien session_destroy() mais quand je reviens sur la page ou en debut il y a session_start(), la session se "re-ouvre" (je pense) et toutes les variables qui vont avec, se re-créent....
 
Comment faire pour éviter que la session se ré-ouvre en évitant bien sur la soluce radicale : fermer le client (ie) ?


---------------
Licence Professionnelle Multimedia Internet Webmaster | Des articles, des aides, des scripts .... le tout disponible sur mon site.
Reply

Marsh Posté le 06-03-2004 à 16:08:56    

Salut,

Code :
  1. unset($_SESSION); // pour tout le tableau de sessions
  2. unset($_SESSION["login" ) //pour une variable


qui remplace session_destroy.

Reply

Marsh Posté le 06-03-2004 à 19:10:23    

Ok merci je teste et je te dit ;)

Reply

Marsh Posté le 06-03-2004 à 20:04:50    

C'est bon ça marche nikel, merci
:hello:


---------------
Licence Professionnelle Multimedia Internet Webmaster | Des articles, des aides, des scripts .... le tout disponible sur mon site.
Reply

Marsh Posté le 06-03-2004 à 20:16:12    

sub1 a écrit :

Salut,

Code :
  1. unset($_SESSION); // pour tout le tableau de sessions
  2. unset($_SESSION["login" ) //pour une variable


qui remplace session_destroy.


 
JAMAIS le unset($_SESSION), c'est la plus grosse connerie que tu puisses faire avec des sessions...
 
Si tu le fais comme ça, dit "au revoir" à toutes variables de sessions, maintenant et dans le futur puisque tu viens de démolir la super globale qui les stocke...
 
La seule bonne manière de détruire une session c'est

Code :
  1. $_SESSION = array();

Reply

Marsh Posté le 06-03-2004 à 20:26:41    

naceroth a écrit :

Si tu le fais comme ça, dit "au revoir" à toutes variables de sessions, maintenant et dans le futur puisque tu viens de démolir la super globale qui les stocke...

Pourtant je l'ai utilisé comme il m'a dit et j'arrive a utiliser les sessions normalement ensuite....
Bref...


---------------
Licence Professionnelle Multimedia Internet Webmaster | Des articles, des aides, des scripts .... le tout disponible sur mon site.
Reply

Marsh Posté le 07-03-2004 à 00:22:57    

Je voudrais savoir si ce qu'a di naceroth c'est du mito ou pas...
Fin j'ai utilisé les 2 et cela fonctionne bien mais ce qu'il a dit m'intrigue un peu....

Reply

Marsh Posté le 07-03-2004 à 00:22:57   

Reply

Marsh Posté le 07-03-2004 à 01:28:34    

Je peux porter plainte pour diffamation dites ??? Les modos vous dormez ???
 
Va voir et lit le grand truc marqué Attention. (et ça marche probablement parce que le garbage system qui s'occupe de supprimer les données périmés ne fonctionne pas sous windows de la même facon que sous Linux...)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed