Votre question

Perte de valeur de variable session dans wamp

Tags :
  • Wamp
  • Programmation
Dernière réponse : dans Programmation
5 Février 2011 08:43:05

Bonjour,
Tout est dans le titre.
J'utilise wamp pour tester un site avec connection ou admin ou membre, et quelque soit le temps que je met dans session.gc_maxlifetime de php.ini, je perd mes valeurs sessions et pas suivant un laps de temps précis c'est très irrégulier.
Quelqu'un à t'il une idée.
Merci

Autres pages sur : perte valeur variable session wamp

a c 145 L Programmation
5 Février 2011 10:31:11

As-tu vérifié la valeur de session.cookie_lifetime qui doit normalement être à 0 ?
m
0
l
5 Février 2011 10:58:05

Comme je galère depuis 3 jours, j'ai réinstallé Wamp et maintenant je n'ai plus d'acces aux bases j'ai ça:
  1. Index of /phpmyadmin
  2. [ICO] Name Last modified Size Description
  3. [DIR] Parent Directory -
  4. [DIR] contrib/ 05-Feb-2011 10:23 -
  5. [DIR] documentation-gsoc/ 05-Feb-2011 10:23 -
  6. [IMG] favicon.ico 04-Jan-2011 18:58 18K
  7. [DIR] js/ 05-Feb-2011 10:23 -
  8. [DIR] lang/ 05-Feb-2011 10:23 -
  9. [DIR] libraries/ 05-Feb-2011 10:23 -
  10. [DIR] pmd/ 05-Feb-2011 10:23 -
  11. [DIR] scripts/ 05-Feb-2011 10:23 -
  12. [DIR] setup/ 05-Feb-2011 10:23 -
  13. [DIR] themes/ 05-Feb-2011 10:23 -
m
0
l
Contenus similaires
a c 145 L Programmation
5 Février 2011 12:10:00

Ah, tu as un souci, il te manque les fichiers php.
Je soupçonne une mauvaise désinstallation de wamp avant la réinstallation.
m
0
l
5 Février 2011 12:20:25

Ca y est je suis enfin sorti de ma M....
J'avais lu sur différent forum qu'il falait mettre une valeur. Là elle est à zéro, et dés que je rafraichi ma page je revien sur la fenêtre de connection. Preuve que la valeur de mon pseudo à disparu.
Je ne comprend pas.
J'ai fait un phpinfo() et je te joins la partie session si ça peu t'aider.
Merci
  1. session
  2. Session Support enabled
  3. Registered save handlers files user sqlite
  4. Registered serializer handlers php php_binary wddx
  5.  
  6. Directive Local Value Master Value
  7. session.auto_start Off Off
  8. session.bug_compat_42 On On
  9. session.bug_compat_warn On On
  10. session.cache_expire 180 180
  11. session.cache_limiter nocache nocache
  12. session.cookie_domain no value no value
  13. session.cookie_httponly Off Off
  14. session.cookie_lifetime 0 0
  15. session.cookie_path / /
  16. session.cookie_secure Off Off
  17. session.entropy_file no value no value
  18. session.entropy_length 0 0
  19. session.gc_divisor 100 100
  20. session.gc_maxlifetime 1440 1440
  21. session.gc_probability 1 1
  22. session.hash_bits_per_character 4 4
  23. session.hash_function 0 0
  24. session.name PHPSESSID PHPSESSID
  25. session.referer_check no value no value
  26. session.save_handler files files
  27. session.save_path c:/wamp/tmp c:/wamp/tmp
  28. session.serialize_handler php php
  29. session.use_cookies On On
  30. session.use_only_cookies Off Off
  31. session.use_trans_sid 0 0
m
0
l
a c 145 L Programmation
5 Février 2011 13:55:25

Question bête, ton php commence bien par session_start() ?
m
0
l
5 Février 2011 14:03:07

Oui de ce côté pas de problème, je te joins le script de protection de page que j'ai avec son session_start();
  1. <?php
  2. session_start() ;
  3. $MM_authorizedUsers = "membre,admin";
  4. $MM_donotCheckaccess = "false";
  5. function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
  6. $isValid = False;
  7. if (!empty($UserName)) {
  8. $arrUsers = Explode(",", $strUsers);
  9. $arrGroups = Explode(",", $strGroups);
  10. if (in_array($UserName, $arrUsers)) {
  11. $isValid = true;
  12. }
  13. if (in_array($UserGroup, $arrGroups)) {
  14. $isValid = true;
  15. }
  16. if (($strUsers == "") && false) {
  17. $isValid = true; } } return $isValid; }
  18.  
  19. $MM_restrictGoTo = "../Index.php";
  20.  
  21. if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {
  22. $MM_qsChar = "?";
  23. $MM_referrer = $_SERVER['PHP_SELF'];
  24. if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
  25. if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0)
  26. $MM_referrer .= "?" . $QUERY_STRING;
  27. $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
  28. header("Location: ". $MM_restrictGoTo);
  29. exit;
  30. }
  31. ?>
m
0
l
5 Février 2011 17:25:13

Tu as un problème de condition sur la ligne 21. Tu exécute isAuthorized alors que tu ne devrais pas le faire si la variable n'est pas déclaré.

Tu devrais activé les messages d'erreur de type E_NOTICE. Soit donc ta conf PHP de dev (de préférence) soit via un error_reporting(E_ALL) en début d'exécution.
m
0
l
5 Février 2011 17:43:20

Salut SiM07

C'est très interessant ce que tu me dit la, mais le probleme c'est que c'est un script tout fait que j'ai récupéré sur le net.
En clair quand tu me dit un message d'erreur du type E_NOTICE, ou un error_reporting(E_ALL) c'est comme mon beauf quand il me parle de sa passion pour les bonzais, j'y comprend rien. Dans son cas c'est que je m'en fout, mais pas ici, alors si tu pouvais m'expiquer.
Et tu crois que ça solutionnerais mon problème, vu que ce script tourne bien sur un espace membre hébergé?
A+
m
0
l
5 Février 2011 17:59:12

Ah il n'est pas de toi !

Bon dans ce cas je vais dire ce que je pense de ce code, il est vraiment très moche, trouve en un autre :)  La personne qui a codé ça ne devait vraiment pas avoir bcp d'expérience.
m
0
l
5 Février 2011 18:04:24

Malheureusement j'ai pas le choix ?
m
0
l
7 Février 2011 09:48:51

UP !
Personne n'a d'idée ??
m
0
l
a c 145 L Programmation
7 Février 2011 09:53:43

Peux-tu nous montrer la partie de ton code qui enregistre la session ? Bien que je ne pense pas que le souci soit là, je préfère vérifier.
m
0
l
7 Février 2011 10:03:42

Bonjour crazycat@id,

Comme je l'ai précisé c'est un code d'espace membre, sans doute merdique, mais qui par ailleurs fonctionne bien sans déconnection.
Je te le joint
Merci
  1. <?php
  2. session_start();
  3. $Mon_Pseudo = $_POST['Mon_Pseudo'];
  4. mysql_select_db($database_connection, $connection);
  5. $query_Recordset1 = "SELECT *XX......";
  6. $Recordset1 = mysql_query($query_Recordset1, $connection) or die(mysql_error());
  7. $row_Recordset1 = mysql_fetch_assoc($Recordset1);
  8. $totalRows_Recordset1 = mysql_num_rows($Recordset1);
  9. $_SESSION['MM_UserGroup'] = $row_Recordset1['Statut'];
  10. $_SESSION['Mon_Pseudo'] = $Mon_Pseudo;
  11. $_SESSION['ID_Parieur'] = $row_Recordset1['Parieur_ID'];
  12. $_SESSION['MM_Username'] = $Mon_Pseudo;
  13. ?>
  14. <?php
  15. // *** Validate request to login to this site.
  16.  
  17.  
  18. $loginFormAction = $_SERVER['PHP_SELF'];
  19. if (isset($accesscheck)) {
  20. $GLOBALS['PrevUrl'] = $accesscheck;
  21. session_register('PrevUrl');
  22. }
  23.  
  24. if (isset($_POST['Mon_Pseudo'])) {
  25.  
  26. $loginUsername=$_POST['Mon_Pseudo'];
  27. $password=$_POST['pass'];
  28. $MM_fldUserAuthorization = "Statut";
  29. //echo $_SESSION['MM_UserGroup'] . "Haut " . '<br/>';
  30. if ($_SESSION['MM_UserGroup'] == "admin")
  31. $MM_redirectLoginSuccess = "admin/Admin_gc_Accueil.php";
  32. else
  33. $MM_redirectLoginSuccess = "membres/Accueil.php";
  34. $MM_redirectLoginFailed = "erreurlogin.php";
  35. $MM_redirecttoReferrer = false;
  36. mysql_select_db($database_connection, $connection);
  37.  
  38. $LoginRS__query=sprintf("SELECT * FROM gc_pseudo WHERE Pseudo='$loginUsername' AND Pass='$password'",
  39. get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));
  40.  
  41. $LoginRS = mysql_query($LoginRS__query, $connection) or die(mysql_error());
  42. $loginFoundUser = mysql_num_rows($LoginRS);
  43. if ($loginFoundUser) {
  44.  
  45. $loginStrGroup = mysql_result($LoginRS,0,'statut');
  46.  
  47. //declare two session variables and assign them
  48. $GLOBALS['Mon_pseudo'] = $loginUsername;
  49. $GLOBALS['MM_UserGroup'] = $loginStrGroup;
  50. unset ($_SESSION['MM_UserGroup']);
  51. $_SESSION['MM_UserGroup'] = $loginStrGroup;
  52. $_SESSION['MM_Username'] = $loginUsername;
  53.  
  54.  
  55. if (isset($_SESSION['PrevUrl']) && false) {
  56. $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
  57. }
  58. header("Location: " . $MM_redirectLoginSuccess );
  59.  
  60. }
  61. else {
  62. header("Location: ". $MM_redirectLoginFailed );
  63. }
  64. }
  65. ?>
m
0
l
a c 145 L Programmation
7 Février 2011 11:26:32

Effectivement, ça ne m'avance pas des masses.
En fait, comment te rends tu compte que la session se ferme dans des temps variables ?

Dans mon esprit, il y a deux manières de gérer ça:
Fonctionnement normal: La personne s'authentifie et chaque fois qu'elle charge une page du site (nécessitant ou pas d'être authentifiée), on relance la session. => Déconnexion après X minutes sans naviguer
Fonctionnement bizarre (mais déjà vu): la personne s'authentifie et la session est relancée uniquement lorsqu'elle recharge une page nécessitant d'être authentifiée. => Déconnexion après X minutes sans avoir navigué sur la partie "sécurisée"

Et il y a un fonctionnement presque inutile: la personne s'authentifie et la session n'est jamais relancée => donc déconnexion X minutes après s'être authentifié.

Donc, peux tu me dire quels tests tu as fait pour pouvoir confirmer ses délais variables ?
m
0
l
7 Février 2011 11:37:44

mes tests sont en temps réel, c'est à dire que je modifie mon script et 5 minutes après je test et je suis toujours connecté, ou alors je test je me rend compte tout de suite qu'un affichage n'est pas correct, je le modifie sur l'instant, je re-test, on va dire dans les tentes secondes, et la :fenêtre de connection.
m
0
l
a c 145 L Programmation
7 Février 2011 11:49:54

Fais tes tests proprement, sans rien modifier dans le code, et toujours avec le même processus.
Il faut te définir un cycle de test:
Login => accès à une autre page => attente de 2 minutes => rechargement de la page => attente de 5 minutes => rechargement de la page

Et ce cycle est donc à reproduire deux ou trois fois, pour vérifier le comportement exactement dans les mêmes conditions (accès aux mêmes pages).
m
0
l
a c 232 L Programmation
7 Février 2011 13:57:30

A mon avis, le soucis vient du fait que tu modifies ta page.
Est-ce que tu ne relances pas ton serveur PHP par exemple, ce qui te ferait perdre les sessions ?
m
0
l
7 Février 2011 14:08:50

Bonjour OmaR,

Comme me l'a suggère crazycat@id je test depuis un moment simplement en rafraichissement et sans modification de page, la conclusion est la perte de connection aux environs de 5 minutes sans changer de page.
Citation :

Est-ce que tu ne relances pas ton serveur PHP par exemple, ce qui te ferait perdre les sessions ?

Si il y a relance de serveur, elle ne peut être qu'interne a WAMP, car en ce qui me concerne le serveur démarre au startup et arrete à la fermeture du PC. Je ne connais pas la procédure pour l'arreter et le relancer dans un script.
m
0
l
a c 232 L Programmation
7 Février 2011 15:04:54

Tu n'avais pas encore dit que tu perdais au bout de 5 minutes sans changer de page, du coup ce n'est pas du à la modification de la page.
J'avais compris que :
Login => accès à une page => attente => changement de page => tu vois que y'a un soucis donc tu modifies la page => déconnecté

Mais si tu as le soucis après avoir rafraichi au bout de 5 minutes, sans modification, ce n'est pas ça.
m
0
l
a c 145 L Programmation
7 Février 2011 15:09:28

Petite idée trouvée sur un forum:
Citation :
'session.cookie_domain' should be set to empty string for all local domain names, not only for 'localhost' (but should not be empty for local IP addresses):
  1. <?php
  2. ini_set('session.cookie_domain', (strpos($_SERVER['HTTP_HOST'],'.') !== false) ? $_SERVER['HTTP_HOST'] : '');
  3. ?>
m
0
l
7 Février 2011 15:26:45

Citation :

Tu n'avais pas encore dit que tu perdais au bout de 5 minutes sans changer de page, du coup ce n'est pas du à la modification de la page.
J'avais compris que :
Login => accès à une page => attente => changement de page => tu vois que y'a un soucis donc tu modifies la page => déconnecté

Mais si tu as le soucis après avoir rafraichi au bout de 5 minutes, sans modification, ce n'est pas ça

Oui en résumé si je reste sur la même page la déconnection est plus tardive.
crazycat@idn a dit :
Petite idée trouvée sur un forum:
Citation :
'session.cookie_domain' should be set to empty string for all local domain names, not only for 'localhost' (but should not be empty for local IP addresses):
  1. <?php
  2. ini_set('session.cookie_domain', (strpos($_SERVER['HTTP_HOST'],'.') !== false) ? $_SERVER['HTTP_HOST'] : '');
  3. ?>


Vois tu je suis de la vieille école celle ou quand tu te ramassait une tarte par le prof, t'avais pas intéret à en parler à la maison sinon t'en prenais deux autres.
Tout ça pour dire que l'anglais et moi !!!!
Le code php on le met où et à quoi il sert.

Merci à vous deux de me consacrer du temps
m
0
l
a c 145 L Programmation
7 Février 2011 15:32:01

Traduction rapide: session.cookie_domain doit être vide pour tous les serveurs du domaine local, pas seulement pour localhost.

Le code est à mettre au tout début de tes pages, avant même le session_start().

Je ne sais pas si ça règlera quelque chose, je t'avouerais que je ne développe que sur des bases LAMP et que je soupçonne plutôt windows d'être en cause.
m
0
l
7 Février 2011 15:59:03

Marche pas !
J'ai mis le code sur une page que j'ai rafraichi sans faire de modif de source et c'est pareil.
Maintenant si ce n'est que local, je me reconnecte et c'est tout.
Mais c'est surprenant que ce problème n'est jamais été soulevé.
m
0
l
a c 145 L Programmation
7 Février 2011 16:02:57

Je n'ai jamais eu le souci pour ma part. Mais je ne fais rien avec wamp.
m
0
l
7 Février 2011 16:04:36

Tu bosse avec quoi ?
m
0
l
a c 145 L Programmation
7 Février 2011 16:12:51

Je t'ai dis: lamp (donc serveur apache/MySQL/PHP sur Linux)
m
0
l
7 Février 2011 16:17:09

Comme tu avais parlé de base LAMP je croyais que c'était uniquement la BDD qui était LAMP.
Excuse moi.
m
0
l
7 Février 2011 18:15:14

Merci à vous tous
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS