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 :
- <?php
- session_start();
- ?>
- <html>
- <head>
- meta et styles
- </head>
- <body>
- <div id="all">
- <div id="left">
- <img src="images/php.gif" style="margin-bottom:50px;">
- <?php
- echo 'a'.$_SESSION['user'].'a'.$_SESSION['pass'].'a';
- ?>
- <form action="includes/login.php" method="post">
- <table style="width:100%;">
- <tr>
- <td colspan="2" style="text-align:center; border-bottom:1px solid chocolate;">Login administrateur</td>
- </tr>
- <tr>
- <td class="login" style="text-align:right;">Utilisateur:</td>
- <td><input name="user" type="text" class="login" size="10">
- </tr>
- <tr>
- <td class="login" style="text-align:right;">Mot de passe:</td>
- <td><input name="pass" type="password" class="login" size="10"></td>
- </tr>
- <tr>
- <td colspan="2" style="text-align:center; border-top:1px solid chocolate;"><input type="submit" value="Login"></td>
- </tr>
- </table>
- </form>
- </div>
- <div id="right">
- <div id="main">
- <?php
- $page = $_GET['page'];
- switch ($page)
- {
- case resultat :
- include 'resultatRequete.php';
- break;
- case admin:
- include 'admin.php';
- break;
- case error:
- echo 'Erreur de connexion';
- break;
- default :
- include 'choixVue.php';
- break;
- }
- ?>
- </div>
- </div>
- <div class="spacer"></div>
- <div id="bottom">
- xxx
- </div>
- </div>
- </body>
- </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 :
- <?php
- if (!($connexion = @OCIPLogon($_SESSION['user'],$_SESSION['pass'],"xxx" ))) {
- $_SESSION['user'] = 'OV_USER';
- $_SESSION['pass'] = 'x';
- //echo 'a'.$_SESSION['user'].'a'.$_SESSION['pass'].'a';
- $connexion = OCIPLogon($_SESSION['user'],$_SESSION['pass'],"xxx" );
- }
- 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 :
- <?php
- $_SESSION['user'] = $_POST['user'];;
- $_SESSION['pass'] = $_POST['pass'];
- //echo 'a'.$_SESSION['user'].'a'.$_SESSION['pass'].'a';
- include 'connexion.php';
- //echo 'a'.$_SESSION['user'].'a'.$_SESSION['pass'].'a';
- if ($_SESSION['user'] == "OV_ADMIN" || $_SESSION['user'] == "ov_admin" ) {
- header("Location: ../index.php?page=admin" );
- }
- else {
- header("Location: ../index.php" );
- }
- ?>
|
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