probleme include et session

probleme include et session - PHP - Programmation

Marsh Posté le 26-02-2007 à 16:43:23    

Bonjour,
Voila j'essaye de faire une partie administration avec identification. Je midentifie et tout se passe bien pour aller sur la page suivante.  
Seulement, les pages intérieures contiennent des include et dès que je clique sur un lien pour accéder à ce include je retourne a l'identification.
Voici une partie du code de la page avec les liens :  
 

Code :
  1. <? session_start(); //ouverture de session
  2. $log=$_POST['login']; //définition des variables
  3. $pswd=$_POST['password'];
  4. $_SESSION['login']=$log;
  5. $_SESSION['password']=$pswd;
  6. if (!@isset ($_SESSION['login'])) // si la variable de session n'existe pas
  7. {echo "Veuillez vous identifier s'il vous plait<br>";
  8. require ("administration1.php" ); // on retourne à la page d'administration1 pour s'identifier
  9. exit();}
  10. ?>
  11. ...
  12.   <li>Gestion des administrateurs
  13.     <ol>
  14.       <li><a href="administration2'.php?section=Aadmin">Ajout d'un administrateur</a></li>
  15.       <li><a href="administration2'.php?section=Madmin">Modification d'un administrateur</a></li>
  16.       <li><a href="administration2'.php?section=Sadmin">Suppression d'un administrateur</a></li>
  17.     </ol>
  18.   </li>
  19. </ul>
  20. <div class="contenu">
  21. <?
  22. if ($_GET['section']==('Agal'||'Mgal'||'Sgal')){
  23. include ("Ggaleries.php" );}
  24. if($_GET['section']==('Cexpo'||'Aexpo'||'Mexpo'||'Sexpo')){
  25. include ("Gexpositions.php" ); }
  26. if ($_GET['section']==('Apresse'||'Spresse')){
  27. include ("Gpresse.php" );}
  28. if ($_GET['section']==('Aadmin'||'Madmin'||'Sadmin')){
  29. include ("Gadmin.php" );}
  30. echo '</div>';  ?>
  31. </div>


 
 
et voila le debut du code de la page incluse: "administration2'.php?section=Aadmin" :  

Code :
  1. <? session_start(); //ouverture de session
  2. $_SESSION['login'];
  3. $_SESSION['password'];
  4. if (!@isset ($_SESSION['login'])) // si la variable de session n'existe pas
  5. {echo "Veuillez vous identifier s'il vous plait<br>";
  6. require ("administration1.php" ); // on retourne à la page d'administration1 pour s'identifier
  7. exit();}
  8. ?>


...
 
 
Pouvez vous m'aider s'il vous plait!!!! :( c'est pour un projet très important!!!


Message édité par lylou007 le 27-02-2007 à 10:13:10
Reply

Marsh Posté le 26-02-2007 à 16:43:23   

Reply

Marsh Posté le 26-02-2007 à 17:36:46    

déjà les short tags, c'est pas beau...
 
et puis pourquoi insérer du php dans le html, alors que finalement ta page s'appel bien.... . php nan ?
(fais un source PHP, et des echos pour le html.)

Reply

Marsh Posté le 26-02-2007 à 18:08:10    

c'est quoi les short tags. De toute facon ca revient au même de mettre des echo partout ou bien d'inclure du php dans du html. c'est pas la question la... j'aimerais savoir comment résoudre le problème entre les include et les sessions. Merci

Reply

Marsh Posté le 26-02-2007 à 18:16:17    

normal sur les autres pages(qui sont en fait le même script php) tu ne reçois plus le login en POST [:spamafote]
edit: et vu ce que tu en fais sur les 3  premières lignes ça risque pas de marcher...


Message édité par anapajari le 26-02-2007 à 18:16:43
Reply

Marsh Posté le 26-02-2007 à 19:13:58    

ba j'ai mis le login en variable de session donc il est present pour n'importe quelle page de la session il y a plus besoin de mettre $_POST['login'];
j'ai un autre script sans include où ca marche très bien avec cette écriture la. C'est la fait qu'il y ai une page en include qui fait que ca marche plus

Reply

Marsh Posté le 27-02-2007 à 08:38:55    

Les shorts tags ce sont <? ?>... au lieu de <?php  
 
et puis utiliser les echos, te permet aussi de t'affranchir de certain soucis de passage d'informations entre tes scripts... parce qu'aprés tout quand tu ferme le tag php, et que tu en ouvre un autre... je ne sais pas comment réagis le serveur php, mais il serait logique qu'il prenne ça comme un nouveau script..

Reply

Marsh Posté le 27-02-2007 à 09:23:01    

lylou007 a écrit :

ba j'ai mis le login en variable de session donc il est present pour n'importe quelle page de la session il y a plus besoin de mettre $_POST['login'];
j'ai un autre script sans include où ca marche très bien avec cette écriture la. C'est la fait qu'il y ai une page en include qui fait que ca marche plus


Sauf que si chaque fois tu fais:

Code :
  1. $log=$_POST['login']; //définition des variables
  2. $pswd=$_POST['password'];
  3. $_SESSION['login']=$log;
  4. $_SESSION['password']=$pswd;


Il risque pas de conserver la valeur qui était dans la session [:spamafote]

Reply

Marsh Posté le 27-02-2007 à 09:57:36    

non je fais pas    
1.
      $log=$_POST['login']; //définition des variables
   2.
      $pswd=$_POST['password'];
   3.
      $_SESSION['login']=$log;
   4.
      $_SESSION['password']=$pswd;
 
je fais ca pour la première page puis ensuite pour chaque page intérieure je met juste
$_SESSION['login'];
$_SESSION['password'];
comme tu peux voir.
 
Proposez moi des solutions svp... plutot que de me dire seulement ce qui ne va pas, je ne sais pas quoi faire la

Reply

Marsh Posté le 27-02-2007 à 10:06:07    

lylou007 a écrit :

non je fais pas  ...


Si [:spamafote] ou alors c'est pas le bon code que tu montres ...

Code :
  1. session_start(); //ouverture de session
  2. $log=$_POST['login']; //définition des variables
  3. $pswd=$_POST['password'];
  4. $_SESSION['login']=$log;
  5. $_SESSION['password']=$pswd;
  6. if (!@isset ($_SESSION['login'])) // si la variable de session n'existe pas
  7. {echo "Veuillez vous identifier s'il vous plait<br>";
  8. require ("administration1.php" ); // on retourne à la page d'administration1 pour s'identifier
  9. exit();}
  10. ...
  11. if ($_GET['section']==('Agal'||'Mgal'||'Sgal')){
  12. include ("Ggaleries.php" );}
  13. if($_GET['section']==('Cexpo'||'Aexpo'||'Mexpo'||'Sexpo')){
  14. include ("Gexpositions.php" ); }
  15. if ($_GET['section']==('Apresse'||'Spresse')){
  16. include ("Gpresse.php" );}
  17. if ($_GET['section']==('Aadmin'||'Madmin'||'Sadmin')){
  18. include ("Gadmin.php" );}


et la je te le redis, tu vides le login stocké dans la session si tu ne le reçois pas en post.

Reply

Marsh Posté le 27-02-2007 à 10:10:19    

voila la deuxième page appelée par le include :  
 

Code :
  1. <? session_start(); //ouverture de session
  2. $_SESSION['login'];
  3. $_SESSION['password'];
  4. if (!@isset ($_SESSION['login'])) // si la variable de session n'existe pas
  5. {echo "Veuillez vous identifier s'il vous plait<br>";
  6. require ("administration1.php" ); // on retourne à la page d'administration1 pour s'identifier
  7. exit();}
  8. ?>


 
je ne remodifie pas la variable. Peux etre que je ne comprend pas où tu veux en venir. Ce que tu me montre est la première page dans lequel il y a la page de contenu (include...).

Message cité 1 fois
Message édité par lylou007 le 27-02-2007 à 10:13:34
Reply

Marsh Posté le 27-02-2007 à 10:10:19   

Reply

Marsh Posté le 27-02-2007 à 10:17:27    

lylou007 a écrit :

je ne remodifie pas la variable. Peux etre que je ne comprend pas où tu veux en venir. Ce que tu me montre est la première page dans lequel il y a la page de contenu (include...).


[:blessure] Je le tente un dernière fois...
T'as page principale qui contient les includes est executée à chaque fois, à chaque execution elle include un fichier certes.  
Mais les 4 premières lignes de cette page principale sont TOUJOURS executées, et donc tu vides ta session dès que tu ne reçois plus de paramètres en POST.

Reply

Marsh Posté le 27-02-2007 à 10:19:51    

ah ok! j'ai compris lol. Merci pour ta patience :)
Comment je peux faire pour déclarer ma variable la première fois et après que ca marche bien sans vider la variable session à chaque fois.  
Merci

Reply

Marsh Posté le 27-02-2007 à 10:37:10    

Je ferais un truc dans le genre:

Code :
  1. session_start();
  2. if ( isset($_POST['login']) && ! empty($_POST['login'])){
  3.   $_SESSION['login']=$_POST['login'];
  4.   $_SESSION['password']=$_POST['password'];
  5. }
  6. /*** la suite ... ***/


Message édité par anapajari le 27-02-2007 à 10:37:24
Reply

Marsh Posté le 27-02-2007 à 10:45:31    

cette fois ci ca ne marche plus du tout. Il ne reconnait plus le login et le mot de passe. Il me met toujours que le login ou mot de passe est incorrect..

Reply

Marsh Posté le 27-02-2007 à 10:46:37    

juste une remarque annexe : pourquoi mettre le mot de passe en session ? Manque de sécurité, potentiellement...

Reply

Marsh Posté le 27-02-2007 à 10:48:03    

si c bon jme suis trompé ca marche! merci beaucoup pour ton aide :)

Reply

Sujets relatifs:

Leave a Replay

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