Salut à tous,
voilà je me suis lancé dans les sessions de php pour faire usage de leur efficacité mais j'arrive pas à passer mes variables de sessions de page à page. Je fais des recherches sur le forum et j'ai lu la faq, mais je trouve pas de solution. j'ai bien verifié le fichier de config d'easyphp et la variable register_globals à off
Code :
- ; - register_globals = Off [Security, Performance]
- ; Global variables are no longer registered for input data (POST, GET, cookies,
- ; environment and other server variables). Instead of using $foo, you must use
- ; you can use $_REQUEST["foo"] (includes any variable that arrives through the
- ; request, namely, POST, GET and cookie variables), or use one of the specific
- ; $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
- ; on where the input originates. Also, you can look at the
- ; import_request_variables() function.
- ; Note that register_globals is going to be depracated (i.e., turned off by
- ; default) in the next version of PHP, because it often leads to security bugs.
- ; Read http://php.net/manual/en/security.registerglobals.php for further
- ; information.
|
Voici mon script de page d'accueil
Code :
- <?
- //Page d'accueil pour un mini site afin de s'habituer aux sessions
- //session_start();
- ?>
- <html>
- <head>
- </head>
- <title>
- Accueil session, formulaire, mot de passe mysql
- </title>
- <body>
- <form name=formulaire action="verification.php" method="post">
- <table align=center>
- <caption>
- <b>Rentrez vos paramétres de connexion!</b>
- </caption>
- <tr>
- <td>
- Votre login :
- </td>
- <td>
- <input type="text" name="le_login">
- </td>
- </tr>
- <tr>
- <td>
- Votre Mot de passe :
- </td>
- <td>
- <input type="password" name="le_mot_de_passe">
- </td>
- </tr>
- <tr>
- <td>
- <img src ="codage.php" alt="image de securisation du formulaire">
- <label for="le_code">Retaper le code suivant :</label>
- </td>
- <td>
- <input type="text" name="le_code" size="5" maxlength="5" />
- </td>
- </tr>
- <tr>
- <td>
- <br>
- <input type="submit" value="envoyer">
- </td>
- <td>
- <br>
- <input type="reset" value="effacer">
- </td>
- </tr>
- </table>
- </form>
|
Cette page d'accueil appelle le script codage.php qui cree une image avec un code à l'interieur.
voici le debut de ce code
codage.php
Code :
- <?php
- /* Démarage d'une session nécéssaire pour récupérer la valeur générée d'une page a l'autre */
- session_start();
- /* on définie la liste qui va servir a récupérer les lettres qui formeront la valeur a saisir : on exclue le 0 (zéro) pour eviter la confusion avec le O */
- $liste = "abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- /* On créer une valeur qui sera notre code secret a saisir */
- $code = '';
- /* On crée une boucle pour créer une chaine de 5 caractères pris au hasard au sein de la variable $liste */
- while(strlen($code) != 5) {
- $code .= $liste[rand(0,63)];
- }
- /* on définit une variable de session nommée $_SESSION['code'] que l'on réutilisera plus tard */
- $_SESSION['code']=$code;
- if (!isset($_SESSION['code'])){
- $_SESSION['code'] = $code;
- }
- ...................
- ................
- ?>
|
Une fois les 3 champs saisies (login, password et code), on click sur envoyer => execution du script verification.php dont voici le debut du code
Code :
- <?php
- session_start(); // nous démarrons la session afin de récupérer la valeur codée
- echo $_SESSION['code'];
- /*if(!isset($_SESSION['code']) OR strlen($_SESSION['code']) !=5){
- //exit("Erreur!" );
- header("location: http://test/php/" );
- }
- */
- //verification parametre de connexion
- $login = $_POST['le_login'];
- $pass = $_POST['le_mot_de_passe'];
- $moncode = $_POST['le_code'];
- ...............
- ............
|
J'arrive bien à recuperer mes variables Code:
Code :
- $login = $_POST['le_login'];
- $pass = $_POST['le_mot_de_passe'];
- $moncode = $_POST['le_code'];
|
mais il n'y a rien dans Code:
du coup si je fais
Code :
- echo $_SESSION['code'];
|
j'ai le message
Code :
- Notice: Undefined index: code in c:\program files\easyphp1-7\www\php\verification.php on line 4
|
si je fais
Code :
- if(!isset($_SESSION['code']) OR strlen($_SESSION['code']) !=5){
- exit("Erreur!" );
|
j'ai droit au exit, que faire please ????
j'ai essayé de changer dans mon fichier de config la ligne
; - register_globals = Off [Security, Performance] par
register_globals = Off
mais rien à faire
pour tester si les sessions fonctionnent, j'ai fait le code suivant
Code :
- <?php
- session_start();
- if (!isset($_SESSION['test'])) {
- $_SESSION['test'] = 0;
- }
- echo $_SESSION['test']++;
- ?>
|
je suis sur mon pc portable à domicile. j'ai bien 0 qui s'affiche, mais en actualisant, j'ai toujours 0, par contre dans mon fichier tmp (C:\Program Files\EasyPHP1-7\tmp) j'ai des fichiers de sessions qui se crée à chaque fois que j'actualise la page.
_________________