[PHP] Sessions qui disparaissent

Sessions qui disparaissent [PHP] - PHP - Programmation

Marsh Posté le 10-05-2004 à 16:03:26    

Bonjour tous
Voila j'ai un petit problème au niveau des sessions PHP.
voici le code que je vais tenter d'expliquer au plus simpe.
 
page d'index:

Code :
  1. <?php
  2.    session_start();
  3. ?>
  4. <html>
  5.    <head>
  6.       meta et styles
  7.    </head>
  8.    <body>
  9.       <div id="all">
  10.      <div id="left">
  11.             <img src="images/php.gif" style="margin-bottom:50px;">
  12.             <?php
  13.                echo 'a'.$_SESSION['user'].'a'.$_SESSION['pass'].'a';
  14.                   ?>
  15.                   <form action="includes/login.php" method="post">
  16.                   <table style="width:100%;">
  17.                      <tr>
  18.                         <td colspan="2" style="text-align:center; border-bottom:1px solid chocolate;">Login administrateur</td>
  19.                      </tr>
  20.                      <tr>
  21.                         <td class="login" style="text-align:right;">Utilisateur:</td>
  22.                         <td><input name="user" type="text" class="login" size="10">
  23.                      </tr>
  24.                      <tr>
  25.               <td class="login" style="text-align:right;">Mot de passe:</td>
  26.               <td><input name="pass" type="password" class="login" size="10"></td>
  27.            </tr>
  28.            <tr>
  29.               <td colspan="2" style="text-align:center; border-top:1px solid chocolate;"><input type="submit" value="Login"></td>
  30.            </tr>
  31.         </table>
  32.         </form>
  33.   </div>
  34.   <div id="right">
  35.      <div id="main">
  36.         <?php
  37.            $page = $_GET['page'];
  38.            switch ($page)
  39.            {
  40.               case resultat :
  41.                  include 'resultatRequete.php';
  42.                  break;
  43.               case admin:
  44.                  include 'admin.php';
  45.                  break;
  46.               case error:
  47.                  echo 'Erreur de connexion';
  48.                  break;
  49.               default :
  50.                  include 'choixVue.php';
  51.                  break;
  52.            }
  53.         ?>
  54.      </div>
  55.   </div>
  56.   <div class="spacer"></div>
  57.   <div id="bottom">
  58.      xxx
  59.   </div>
  60.    </div>
  61.    </body>
  62. </html>


 
la page choixvue.php (celle par défaut lorsqu'on ouvre l'index), va effectuer une connexion sur une base et afficher des résultats.
 
connexion.php

Code :
  1. <?php
  2.   if (!($connexion = @OCIPLogon($_SESSION['user'],$_SESSION['pass'],"xxx" ))) {
  3.      $_SESSION['user'] = 'OV_USER';
  4.      $_SESSION['pass'] = 'x';
  5.      //echo 'a'.$_SESSION['user'].'a'.$_SESSION['pass'].'a';
  6.      $connexion = OCIPLogon($_SESSION['user'],$_SESSION['pass'],"xxx" );
  7.   }
  8. php?>


cette page de connexion va tester la connexion sur oracle avec le nom d'utilisateur et mot de passe dans les session. en premier lieu, elles sont vides, donc on va aller dans l'erreur et mettre des valeurs par défauts aux sessions (ov_user). on refait la connexion.
 
retournons à la page d'index, cette derniere propose un login qui sera envoyé à la page login.php

Code :
  1. <?php
  2.   $_SESSION['user'] = $_POST['user'];;
  3.   $_SESSION['pass'] = $_POST['pass'];
  4.   //echo 'a'.$_SESSION['user'].'a'.$_SESSION['pass'].'a';
  5.   include 'connexion.php';
  6.   //echo 'a'.$_SESSION['user'].'a'.$_SESSION['pass'].'a';
  7.   if ($_SESSION['user'] == "OV_ADMIN" || $_SESSION['user'] == "ov_admin" ) {
  8.      header("Location: ../index.php?page=admin" );
  9.   }
  10.   else {
  11.      header("Location: ../index.php" );
  12.   }
  13. ?>


on va donc mettre les valeurs du formulaire dans les sessions, puis faire une connexion. pour finir on va faire une redirection si le user est admin.
 
problème: sur ma page d'index, j'ai toujours OV_USER d'affiché (voir point en gras). mais selon le echo dans la page de login, les sessions sont correctes juste avant la redirection.
 
si je bloque la mise des valeurs par défaut (connexion.php), mes sessions seront toujours vides!
 
voila, si vous avez une idée merci d'avance :jap:

Reply

Marsh Posté le 10-05-2004 à 16:03:26   

Reply

Marsh Posté le 11-05-2004 à 15:13:37    

j'ai également observé que lors de mon logout, je mets d'autres valeurs dans mes sessions. ces dernières ne sont pas changées.
 
en fait tous ces problèmes interviennent après une redirection Header xxx, serait-ce un problème de configuration de serveur?

Reply

Marsh Posté le 11-05-2004 à 15:22:45    

Code :
  1. <?php
  2.                  echo 'a'.$_SESSION['user'].'a'.$_SESSION['pass'].'a';
  3.                     ?>

:??:  
 
c'est quoi ces [g].
pasque le ton [g] est en dehors tu echo :D


Message édité par Profil supprimé le 11-05-2004 à 15:23:04
Reply

Marsh Posté le 11-05-2004 à 15:23:28    

c'était pour mettre en forme sur le forum :D

Reply

Marsh Posté le 11-05-2004 à 15:23:45    

:lol: ok :)

Reply

Marsh Posté le 12-05-2004 à 09:33:20    

essaye un session_start(); en debut de ta page login.php pour propager tes variables de sessions. :)

Reply

Marsh Posté le 12-05-2004 à 09:36:21    

oky je vais tester :jap:

Reply

Marsh Posté le 12-05-2004 à 09:39:05    

excellent, ca a l'air de bien fonctionner!
comme tu l'as dit que j'ai mis dans le login et aussi dans le logout, il a l'air de les prendre cette fois!
merci énormément, j'étais trop dans la merde avec ce problème!

Reply

Marsh Posté le 12-05-2004 à 09:43:17    

a ton service

Reply

Marsh Posté le 12-05-2004 à 09:45:20    

est-ce que tu as des explications plus précises sur ce phénomène?

Reply

Marsh Posté le 12-05-2004 à 09:45:20   

Reply

Marsh Posté le 12-05-2004 à 09:52:48    

rien d'extraordinaire lorsque tu charges une nouvelles page la fonction session_start(); transmet tes variables de session a cette page (si la session existe) sinon elle créee une nouvelle session.
en fait cette fonction est mal nommée peut etre.
dans ton cas ta session creee dans index n 'etait donc tout simplement pas transmise à ta page login.php (et logout)

Reply

Marsh Posté le 12-05-2004 à 09:53:29    

okay merci beaucoup, c'est bon à savoir ca :jap:
(jusqu'à maintenant je n'ai que de l'ASP qui gère les choses autrement)

Reply

Sujets relatifs:

Leave a Replay

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