Se connecter avec
S'enregistrer | Connectez-vous

Perte de valeur de variable session dans wamp

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte

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 -

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

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. ?>
Expert Programmation

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.

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+
Expert Programmation

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.

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. ?>
Expert Programmation

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 ?

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.
Expert Programmation

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).

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.
Expert Programmation

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.
Expert Programmation

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. ?>

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
Expert Programmation

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.

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é.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde