[sessions et easyphp 1.7] probleme page à page

probleme page à page [sessions et easyphp 1.7] - PHP - Programmation

Marsh Posté le 30-03-2005 à 12:49:34    

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 :
  1. ; - register_globals = Off [Security, Performance]
  2. ; Global variables are no longer registered for input data (POST, GET, cookies,
  3. ; environment and other server variables). Instead of using $foo, you must use
  4. ; you can use $_REQUEST["foo"] (includes any variable that arrives through the
  5. ; request, namely, POST, GET and cookie variables), or use one of the specific
  6. ; $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
  7. ; on where the input originates. Also, you can look at the
  8. ; import_request_variables() function.
  9. ; Note that register_globals is going to be depracated (i.e., turned off by
  10. ; default) in the next version of PHP, because it often leads to security bugs.
  11. ; Read http://php.net/manual/en/security.registerglobals.php for further
  12. ; information.


 
 
Voici mon script de page d'accueil  
 

Code :
  1. <?
  2. //Page d'accueil pour un mini site afin de s'habituer aux sessions  
  3. //session_start();  
  4. ?>
  5. <html>
  6.   <head>
  7.   </head>
  8.   <title>
  9.     Accueil session, formulaire, mot de passe mysql
  10.   </title>
  11.   <body>
  12.     <form name=formulaire action="verification.php" method="post">
  13.       <table align=center>
  14.         <caption>
  15.           <b>Rentrez vos param&eacute;tres de connexion!</b>
  16.         </caption>
  17.         <tr>
  18.           <td>
  19.             Votre login :
  20.           </td>
  21.           <td>
  22.             <input type="text" name="le_login">
  23.           </td>
  24.         </tr>
  25.         <tr>
  26.           <td>
  27.             Votre Mot de passe :
  28.           </td>
  29.           <td>
  30.             <input type="password" name="le_mot_de_passe">
  31.           </td>
  32.           </tr>
  33.           <tr>
  34.           <td>
  35.            <img src ="codage.php" alt="image de securisation du formulaire">
  36.          <label for="le_code">Retaper le code suivant :</label>
  37.           </td>
  38.           <td>
  39.           <input type="text" name="le_code" size="5" maxlength="5" />
  40.           </td>
  41.           </tr>
  42.           <tr>
  43.             <td>
  44.               <br>
  45.               <input type="submit" value="envoyer">
  46.             </td>
  47.             <td>
  48.               <br>
  49.               <input type="reset" value="effacer">
  50.             </td>
  51.             </tr>
  52.       </table>
  53.     </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 :
  1. <?php
  2. /* Démarage d'une session nécéssaire pour récupérer la valeur générée d'une page a l'autre */
  3. session_start();
  4. /* 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 */
  5. $liste = "abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  6. /* On créer une valeur qui sera notre code secret a saisir */
  7. $code = '';
  8. /* On crée une boucle pour créer une chaine de 5 caractères pris au hasard au sein de la variable $liste */
  9. while(strlen($code) != 5) {
  10. $code .= $liste[rand(0,63)];
  11. }
  12. /* on définit une variable de session nommée $_SESSION['code'] que l'on réutilisera plus tard */
  13. $_SESSION['code']=$code;
  14. if (!isset($_SESSION['code'])){
  15. $_SESSION['code'] = $code;
  16. }
  17. ...................
  18. ................
  19. ?>


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 :
  1. <?php
  2. session_start(); // nous démarrons la session afin de récupérer la valeur codée  
  3. echo $_SESSION['code'];
  4. /*if(!isset($_SESSION['code']) OR strlen($_SESSION['code']) !=5){  
  5. //exit("Erreur!" );  
  6. header("location: http://test/php/" );  
  7. }  
  8. */
  9. //verification parametre de connexion  
  10. $login = $_POST['le_login'];
  11. $pass = $_POST['le_mot_de_passe'];
  12. $moncode = $_POST['le_code'];
  13. ...............
  14. ............


J'arrive bien à recuperer mes variables Code:  

Code :
  1. $login = $_POST['le_login'];
  2. $pass = $_POST['le_mot_de_passe'];
  3. $moncode = $_POST['le_code'];

 
 
mais il n'y a rien dans Code:  

Code :
  1. $_SESSION['code'];

du coup si je fais  
 

Code :
  1. echo $_SESSION['code'];

j'ai le message  

Code :
  1. Notice: Undefined index: code in c:\program files\easyphp1-7\www\php\verification.php on line 4


si je fais  
 

Code :
  1. if(!isset($_SESSION['code']) OR strlen($_SESSION['code']) !=5){
  2. 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 :
  1. <?php
  2. session_start();
  3. if (!isset($_SESSION['test'])) {
  4.    $_SESSION['test'] = 0;
  5. }
  6. echo $_SESSION['test']++;
  7. ?>


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

Reply

Marsh Posté le 30-03-2005 à 12:49:34   

Reply

Marsh Posté le 30-03-2005 à 15:52:07    

help [:aurel74]

Reply

Marsh Posté le 30-03-2005 à 16:24:01    

- quelle version de php ?
 
- cookie activés sur navigateur ?
- ou trans-id activé dans php ?

Reply

Marsh Posté le 30-03-2005 à 16:28:17    

PHP Version 4.3.3
comment savoir pour cookie et trans-id  
je suis sous winXP

Reply

Marsh Posté le 30-03-2005 à 16:39:50    

dans mon php.ini j'ai
session.use_trans_sid = 0
et dois je changer  
; - register_globals = Off [Security, Performance]  
par  
register_globals = Off  

Reply

Marsh Posté le 30-03-2005 à 17:01:39    

ton navigateur accepte les cookie ?

Reply

Marsh Posté le 30-03-2005 à 17:15:39    

je pense que oui.
sinon comment le verifies tu au cas ou?

Reply

Marsh Posté le 30-03-2005 à 17:18:09    

bioinfo_djib a écrit :

je pense que oui.
sinon comment le verifies tu au cas ou?


ça depend de ton navigateur

Reply

Marsh Posté le 30-03-2005 à 17:49:45    

j'ai internet explorer

Reply

Marsh Posté le 31-03-2005 à 13:55:59    

bon je comprends plus rien, mes scripts fonctionnent chez d'autres personnes.
j'ai refait d'autres scripts de basessur les sessions, mais elles ne marchent toujours pas. J'ai donc desinstallé easyphp1.7 et l'ai reinstallé, mais rien à faire ça marche toujours pas. Alors je sais pas si c mon ordi qui deconne, je sais pas. Je me dis qu'en instalant la version 1.8, ca changera rien et puis j'aime pas ne pas comprendre c pas ainsi qu'on evolue. Pitié help me.
voivi mes nouveaux scripts avec les resultats obtenus:
page1.php

Code :
  1. <?
  2. session_start() ;
  3. ?>
  4. <form method="post" action="page2.php">
  5. entrez votre nom : <input type="text" name="nom">
  6. <input type="submit" value="ok">
  7. </form>
  8. <pre>
  9. <?
  10. print_r ( $_SESSION ) ;
  11. ?>
  12. </pre>


=> resultat page1.php

Code :
  1. entrez votre nom : toto
  2. Array
  3. (
  4. )

page2.php

Code :
  1. <?
  2. session_start() ;
  3. $_SESSION['nom'] = $_POST['nom'] ;
  4. ?>
  5. Bienvenue sur ce site <b><? echo $_POST['nom'] ; ?></b>.<br />
  6. Regardons ce qui se passe sur la <a href="page3.php">page</a> suivante.<br />
  7. <pre>
  8. <?
  9. print_r ( $_SESSION ) ;
  10. ?>

</pre>  
 
=> resultat page2.php

Code :
  1. Bienvenue sur ce site toto.
  2. Regardons ce qui se passe sur la page suivante.
  3. Array
  4. (
  5. [nom] => toto
  6. )


page3.php

Code :
  1. <?
  2. session_start() ;
  3. ?>
  4. Vous êtes toujours parmi nous <b><? echo $_SESSION['nom'] ; ?></b>.
  5. <pre>
  6. <?
  7. print_r ( $_SESSION ) ;
  8. ?>
  9. </pre>


=> resultat page3.php

Code :
  1. Vous êtes toujours parmi nous
  2. Notice: Undefined index: nom in c:\program files\easyphp1-7\www\php\page3.php on line 5
  3. .
  4. Array
  5. (
  6. )

Reply

Marsh Posté le 31-03-2005 à 13:55:59   

Reply

Marsh Posté le 31-03-2005 à 14:00:52    

cela ne vient pas de easyphp, mais de ta config php et navigateur : si ton navigateur refuse les cookie il faut que tu passe l'id de session dans l'url (avec trans_id activé par exemple)
 
relis un peu la doc : http://fr.php.net/manual/fr/ref.session.php

Reply

Marsh Posté le 31-03-2005 à 14:25:51    

même en passant les sid par l'url ca change rien, de plus j'ai jamais eu de souci avec lescookies, donc d'où peut venir mes soucis???

Reply

Marsh Posté le 31-03-2005 à 16:28:44    

apres verification, mon navigateur ne bloque pas les cookies. comment faire fonctionner ces fameuses sessions

Reply

Marsh Posté le 31-03-2005 à 16:48:15    

fait un phpinfo() et dis nous ce que tu as dans la partie session

Reply

Marsh Posté le 31-03-2005 à 17:08:47    

Code :
  1. session
  2. Session Support  enabled 
  3. Registered save handlers  files user 
  4. Directive Local Value Master Value
  5. session.auto_start Off Off
  6. session.bug_compat_42 Off Off
  7. session.bug_compat_warn On On
  8. session.cache_expire 180 180
  9. session.cache_limiter nocache nocache
  10. session.cookie_domain no value no value
  11. session.cookie_lifetime 0 0
  12. session.cookie_path / /
  13. session.cookie_secure Off Off
  14. session.entropy_file no value no value
  15. session.entropy_length 0 0
  16. session.gc_divisor 1000 1000
  17. session.gc_maxlifetime 1440 1440
  18. session.gc_probability 1 1
  19. session.name PHPSESSID PHPSESSID
  20. session.referer_check no value no value
  21. session.save_handler files files
  22. session.save_path C:\Program Files\EasyPHP1-7\tmp\ C:\Program Files\EasyPHP1-7\tmp\
  23. session.serialize_handler php php
  24. session.use_cookies On On
  25. session.use_only_cookies Off Off
  26. session.use_trans_sid Off Off

Reply

Marsh Posté le 31-03-2005 à 18:02:57    

Bon faudra qu'on m'explique car je n'aime pas ne pas comprendre, je me demande s'il n'y aurait pas un peu de magie dans l'info de temps en temps  :?  
Bref, ayant marre de lire de la doc, de consulter pleins de forum, j'ai décidé de desinstaller une nouvelle fois easyphp1.7 et j'ai installer la nouvelle version la 1.8, et comme par miracle tous mes scripts fonctionnent à merveille. C'est cool  :yaisse2:  :yaisse3:  :yaisse:  
En tout cas merci pour l'aide de tout le monde.  
Mais Pourquoi ça marchait pas avant, that's a big question , J'ai besoin de savoir=> ça fait parti du progres non!!!

Reply

Sujets relatifs:

Leave a Replay

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