Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pas de conservation des variables de session

Sujet résolu
    26 décembre 2012 à 19:17:07

    Bonsoir les Zéros ! :D

    Je fais appel à vous, car j'ai un problème avec mes variables de session. En effet je fais mon :
    session_start();
    

    Au tout début du code puis j'affecte des valeurs à ces variables en faisant :
    $_SESSION['exemple']='zéro';
    

    mais elles ne sont pas conservé après actualisation de la page.

    Merci d'avance,
    Cordialement
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      26 décembre 2012 à 19:27:38

      peux tu donner le code complet de ta page ? ne fais tu ps session_destroy en bas de la page ?
      • Partager sur Facebook
      • Partager sur Twitter
        26 décembre 2012 à 19:34:30

        Est-ce que tu met ton session_start() avant tout code dans ta page??
        • Partager sur Facebook
        • Partager sur Twitter
          26 décembre 2012 à 19:36:46

          Voici le code :

          <?php 
          session_start();
          
          //Connexion db
          try
          {
          	$db = new PDO('mysql:host=********;dbname=********', '********', '********');
          }
          catch (Exception $e)
          {
          	die('Erreur : ' . $e->getMessage());
          }
          
          
          
          //Intégration du process de connxion
          include 'process_connect.php';
          
          [...]
          
          if ($_SESSION['connexion']==true) {
          //affichage de la page
          [...]
          }
          else {
          //formulaire de connection
          [...]
          }
          


          process_connect.php :

          <?php 
          
          //Demande de déconnexion
          if ($_GET['disconnect']) {
          	session_destroy();
          }
          
          
          
          $mail_valid=true;
          $password_valid=true;
          
          //Processus de connexion
          
          	//Verification de la présence des champs login et mdp
          	if (isset($_POST['mail']) AND isset($_POST['password'])) {
          		//Extraction des e-mails présents dans la base
          		$exctract_account = $db->query('SELECT * FROM data_users');
          		//Verification de la correspondance entre mail du POST et mail de la db
          		while ($exctrated_account = $exctract_account->fetch()) {
          			$mail_valid=false;
          			if ($exctrated_account['mail']==$_POST['mail']) {
          				$mail_valid=true;
          				$password_valid=false;
          				if ($exctrated_account['password']==md5($_POST['password'])) {
          					$password_valid=true;
          					$_SESSION['connexion']=true;
          				}
          			}
          		}
          	}
          
          
          
           ?>
          


          Ca marche quand je mets le bon login pswd, puis quand j'actualise la page ça remets le formulaire de connexion.

          Et oui je mets le session start
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            26 décembre 2012 à 19:41:48

            ligne 3 de ton process_connect.php, ta condition est moyenne, tu peux avoir une erreur ici, il faut que tu vérifies que l'index 'disconnect' existe bien dans $_GET, de cette manière :
            <?php
            if (isset($_GET['disconnect']) && $_GET['disconnect']) {
                session_destroy();
            }
            
            • Partager sur Facebook
            • Partager sur Twitter
              26 décembre 2012 à 20:33:51

              Merci !
              J'ai corrigé ce premier point mais il n'y a toujours pas de conservation des variables de session :/
              • Partager sur Facebook
              • Partager sur Twitter
                26 décembre 2012 à 20:42:39

                Salut,
                dans ton process pourquoi faire une boucle global ?
                Juste une clause WHERE et retirer la boucle est suffisant.

                A mon avis ton problème vient de là ;)
                • Partager sur Facebook
                • Partager sur Twitter
                Infoxp ici depuis 2007
                Anonyme
                  26 décembre 2012 à 20:45:44

                  Citation : AntoineOnTheWeb

                  Merci !
                  J'ai corrigé ce premier point mais il n'y a toujours pas de conservation des variables de session :/



                  1)chez quel hébergeur est tu?
                  2)regarde sur ton navigateur, verifie qu'il y a un cookie nommé "PHPSESSID" qui existe bien
                  3)essaye en placant un exit peu apres le "session_start()"(au cas ou tu ai placé un session_destroy () apres...)
                  4)essaye de mettre error_reporting(-1); ca vas faire afficher toutes les erreurs..
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 décembre 2012 à 21:33:35

                    Citation : Infoxp

                    Salut,
                    dans ton process pourquoi faire une boucle global ?
                    Juste une clause WHERE et retirer la boucle est suffisant.

                    A mon avis ton problème vient de là ;)



                    Non car au premier lancement cela fonctionne mais après rafraîchissement cela ne fonctionne plus. Mais y a peut être un peu d'optimisation à faire.


                    Citation : gusfl

                    Citation : AntoineOnTheWeb

                    Merci !
                    J'ai corrigé ce premier point mais il n'y a toujours pas de conservation des variables de session :/



                    1)chez quel hébergeur est tu?
                    2)regarde sur ton navigateur, verifie qu'il y a un cookie nommé "PHPSESSID" qui existe bien
                    3)essaye en placant un exit peu apres le "session_start()"(au cas ou tu ai placé un session_destroy () apres...)
                    4)essaye de mettre error_reporting(-1); ca vas faire afficher toutes les erreurs..



                    1) Je suis chez 1and1
                    2) Pas de cookie présent :/
                    3) Pas de session_destroy à l'horizon
                    4) Pas d'erreur...
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      26 décembre 2012 à 22:00:07

                      Citation : AntoineOnTheWeb


                      2) Pas de cookie présent :/



                      Ton probleme vient de la.

                      En gros voici le fonctionnement des sessions :

                      quand un visiteur se connecte, un numéro lui est attribué. c'est un numéro bien compliqué, du style "1fe76825d87d3c1d4c5dea654eaa9a387b0efe04"....par exemple...

                      ce numéro est conservé sur le serveur, et est en meme temps envoyé dans un cookie(nommé PHPSESSID par défaut...tu peut changer le nom avec session_name()....sur le siteduzero le cookie s'apelle sessid par exemple)

                      toutes les variables $_SESSION seront stoqués sur le serveur, pendant une durée variable(par défaut 1h ou 2...tu peut changer le temps avec un .htaccess. a voir la faq de 1&1, par défaut c'est 1h chez eux), dans un dossier bien spécial(parfois sur un autre serveur carrément :p chez olympe, mon hébergeur, c'est comme ca...) ou directement dans la mémoire vive....tu peux regarder l'endroit ou sont sont stoqués les sessions en utilisant session_save_path(). Lorsque un internaute demande une page web avec un cookie de sessions correspondance a quelque chose, alors ces les données correspondant a ce cookie sont chargés.


                      ici, don probleme est tout simplement que la session n'a pas démarée correctement :(

                      donc tu peux essayer de faire:
                      <?
                      var_dump(session_start());//affiche
                      //"true" ou "false" selon si la session a démaré la session
                      
                      session_save_path();//affiche l'endroit ou sont 
                      //stoqués sur le serveur les variables de session
                      
                      var_dump(session_regenerate_id(true));//demande a recréer
                      //un nouvel id de session et un nouveau cookie
                      //a tester car parfois, session_start() renvoie true même
                      //si la session n'a pas démarré correctment
                      
                      ?>
                      
                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 décembre 2012 à 22:05:37

                        Ces trois lignes me donne ça : bool(true) bool(false)
                        Donc apparemment session_save_path() ne revoie rien.
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          26 décembre 2012 à 22:22:19

                          Citation : AntoineOnTheWeb

                          Ces trois lignes me donne ça : bool(true) bool(false)
                          Donc apparemment session_save_path() ne revoie rien.



                          oui. essaye de faire
                          <?
                          error_reporting(-1);//important ! 
                          
                          session_save_path(dirname(__FILE__).'/session/');
                          
                          session_start();
                          
                          
                          var_dump(session_regenerate_id(true));
                          
                          exit();
                          
                          ?>
                          


                          (ici, j'essaye de changer l'endroit ou sont sauvegardés les sessions...normalement ca peut provoquer une erreur...)

                          ca dois etre 1&1 qui a un pb de session, contacte les pour plus d'info...ou regarde la faq


                          EDIT : sinon essaye de faire <?php phpinfo(INFO_MODULES); ?> et recherche la ligne "session.save_path"....elle contient la meme chose que session_save_path()...mais avant d'etre retouché par php
                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 décembre 2012 à 22:27:16

                            Voici ce que ça me donne :

                            Warning: session_start(): open(/homepages/28/d447412627/htdocs/dev/moncompte/session//sess_cd9d2a5e3a92cb18b5b436f1b667f819, O_RDWR) failed: No such file or directory (2) in /homepages/28/d447412627/htdocs/dev/moncompte/test.php on line 6

                            Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /homepages/28/d447412627/htdocs/dev/moncompte/test.php:6) in /homepages/28/d447412627/htdocs/dev/moncompte/test.php on line 6

                            Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /homepages/28/d447412627/htdocs/dev/moncompte/test.php:6) in /homepages/28/d447412627/htdocs/dev/moncompte/test.php on line 6

                            Warning: session_regenerate_id(): Cannot regenerate session id - headers already sent in /homepages/28/d447412627/htdocs/dev/moncompte/test.php on line 9
                            bool(false)
                            Warning: Unknown: open(/homepages/28/d447412627/htdocs/dev/moncompte/session//sess_cd9d2a5e3a92cb18b5b436f1b667f819, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

                            Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/homepages/28/d447412627/htdocs/dev/moncompte/session/) in Unknown on line 0
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              26 décembre 2012 à 22:34:35



                              Ooops :o désolé j'ai fait 2 erreurs...j'ai mis un slash en trop et j'ai oublié de creer automatiquement le répertoire....méa culpa :(

                              ressaye avec ca:


                              <?
                              error_reporting(-1);//important ! 
                              
                              if(!is_dir(dirname(__FILE__).'/session'))if(!mkdir(dirname(__FILE__).'/session'))exit('Erreur ! Impossible de creer le dossier des sessions.....');
                              
                              session_save_path(dirname(__FILE__).'/session');
                              
                              session_start();
                              
                              var_dump(session_regenerate_id(true));
                              
                              exit();
                              
                              ?>
                              

                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 décembre 2012 à 22:36:15

                                if(ISSET($tavarible){
                                }

                                Derien et bonne soirée.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  26 décembre 2012 à 22:38:25

                                  Tu as essayer ma méthode? Elle fonctionne.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    26 décembre 2012 à 22:40:42

                                    Citation : JeansMedaille32

                                    Tu as essayer ma méthode? Elle fonctionne.



                                    Non mais en quoi consiste t-elle concrètement ? En quoi cela peux m'aider ?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Anonyme
                                      26 décembre 2012 à 22:42:10

                                      Citation : AntoineOnTheWeb

                                      Ça me renvoie : bool(true)



                                      alors :

                                      c'est bon tes sessions marchent maintenant. Mais si tu regarde tu a un répertoire sur ton ftp qui s'est créé qui s'appelle "session". Protège ce dossier absolument ! Et combien d'espace disque a tu?
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        26 décembre 2012 à 22:43:00

                                        Elle consiste a savoir si la variable de session est non null donc par défaut a accéder au reste du code.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          26 décembre 2012 à 22:44:36

                                          Très bien merci mais cela ne résout pas mon problème :/
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            26 décembre 2012 à 22:48:37

                                            Utilise mon code correctement et ton problème sera résolu
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              26 décembre 2012 à 22:49:10

                                              Tu peux développer s'il te plait
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Anonyme
                                                27 décembre 2012 à 8:37:00

                                                il a déjà essayé, c'est ma première proposition de solution et ca n'a pas fonctionné...
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  27 décembre 2012 à 11:36:00

                                                  Merci à tous les zéros ayant participé à ce topic !
                                                  Finalement j'ai trouvé la solution.
                                                  J'ai récupéré le code de guslf en le modifiant un peu un ça marche ! Je mets donc ça en début de page :

                                                  <?php
                                                  if(!is_dir(dirname(__FILE__).'/../session'))if(!mkdir(dirname(__FILE__).'/../session'))exit('Erreur ! Impossible de creer le dossier des sessions.....');
                                                  
                                                  session_save_path(dirname(__FILE__).'/../session');
                                                  
                                                  session_start();
                                                  


                                                  Cela devait donc être du à un problème dans le dossier d'enregistrement des fichiers de session. Je précise que j'ai maintenant bien un dossier de session dans le répertoire parent à celui de mon script, c'est pour cela que j'ai mis /../session.
                                                  Merci encore à vous tous !
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  Anonyme
                                                    27 décembre 2012 à 16:10:30

                                                    Citation : AntoineOnTheWeb

                                                    Merci à tous les zéros ayant participé à ce topic !
                                                    J'ai récupéré le code de guslf en le modifiant un peu un ça marche ! Je mets donc ça en début de page



                                                    De rien ;) gusfl et non guslf :p Mais fait gaffe....les sessions vont etre sauvegardés directement dans ton espace d'hébergement....si tu a trop de visiteurs, tu vas dépasser ton espace disque si tu a le forfait 2mo ou autre ;) des sessions peuvent prendre 500ko pour 20 000 visites/jours a peut pres...





                                                    Je voudrais également ajouter quelques chose a ceux qui tomberont un jour sur ce forum ;) cette méthode ne marche QUE lorsque les sessions sont stoqués sous forme de fichiers, et non directement dans la mémoire vive ! pour savoir si les sessions sont stoqués dans la mémoire vive ou sur le disque dur du serveur, il faut se débrouiller pour faire afficher l'erreur suivante:

                                                    Citation

                                                    Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/homepages/28/d447412627/htdocs/dev/moncompte/session/) in Unknown on line 0



                                                    Lorsque les sessions sont sauvegardé dans la RAM du serveur, ce n'est pas "files" mais "memcache" qui est affiché....

                                                    et dans ce cas la je peux faire quoi?

                                                    Excellente question, je n'ai malheureusement pas trouvé la réponse.....mon hébergeur a eu un pb avec les sessions(qui etaient évidement stoqués dans la memoire vive...), j'ai essayé pas mal de techniques sans arriver a grand chose...
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter

                                                    Pas de conservation des variables de session

                                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                    • Editeur
                                                    • Markdown