Garder la trace d'une session pour toutes les pages !

Garder la trace d'une session pour toutes les pages ! - PHP - Programmation

Marsh Posté le 14-10-2006 à 22:49:12    

Bonjour,  
J'ai un probleme pour garder la trace d'une session !  
lorsque l'admin se connecte seule la premiere page appariat, lorsqu il passe à la 2 eme, il n est plus connecté !  
je vous copie ma page .htm et ma page .php afin de ma'aider a trouvé le probleme :  
 
//page admin.htm  
Code:  
 
 
<form name="form1" method="POST" action="admin.php">  
   
      <td>Login</td>  
    <td>  
        <input name="login" type="text" id="login">  
      </td>  
 
 
      <td>Mot de passe</td>  
    <td><input name="password" type="password" id="password"></td>  
</form>  
 
 
 
 
 
//page admin.php  
Code:  
 
 
<?php  
session_start(); // Démarage de la session OBLIGATOIRE  
 
 
if (!empty ($_POST['login']) && !empty ($_POST['password']))  
{  
include ("connexion.php" );  
$login=$_POST['login'];  
$password=$_POST['password'];  
 
$identification = "SELECT COUNT(*) FROM `tableadmin` where login='".$login."' and motpasse='".$password."'";  
$req_id = mysql_query($identification) or die (mysql_error ());  
 
 
 
 
 
 
if (mysql_result ($req_id, 0) == 0)  
{  
?>  
<h3><font color="#FF0000">Login ou mot de passe invalide </font>  
<h3>  
<?php  
}  
else  
{  
 
 //ok : admin reconnu  
   
$_SESSION['login'] = $login;  
 
 
/* Paramètres de pagination */  
$nb_nouv_par_page = 2;             /* Nombre de nouvelles qui seront affichées sur chaque page */  
$url = "./admin.php?page=";  
 
/* On détermine quelle est la page qui est actuellement affichée */  
$page_en_cours    = isset($_GET['page']) ? $_GET['page'] : 0;  
$page_affichee    = ($page_en_cours + 1);  
 
 
 
/* Requête pour compter les nouvelles présentes dans notre base de données */  
$sql_nb = "SELECT COUNT(*) FROM `bien` ";  
 
/* Exécution de la requête et récupération du résultat */  
$resultat_1 = mysql_query($sql_nb);  
$nb_nouvelles = mysql_result($resultat_1, 0);  
 
/* Calcul du nombre total de pages : on arrondit à l'entier supérieur (ceil() ) */  
$nb_pages = ceil($nb_nouvelles / $nb_nouv_par_page);  
 
if($nb_pages > 0)  
{  
    /* On définit une variable qui contiendra les données de navigation */  
    $barre_nav = "";  
    /* Nous avons au moins une page : avons nous besoin d'une barre de navigation ? */  
    if($nb_pages > 1)  
    {  
 
                if($page_en_cours > 0)  
        {  
            for($i = 0; $i < $page_en_cours; $i++)  
            { //$_SESSION['login'];  
                $p = $i + 1;  
                $barre_nav .= "<a href=\"". $url . $i ."\" title=\"page ". $p ."\">". $p ."</a> | ";  
            }  
        }  
       
        $barre_nav .= "<strong>". $page_affichee ."</strong>";  
        /* Enfin on affiche (s'il y a lieu) les liens vers les pages suivantes */  
        if(($page_affichee) < $nb_pages)  
        {  
            /* Il reste encore d'autres pages à afficher */  
            $nb_suivantes = $nb_pages - ($page_affichee);  
            for($j = ($page_affichee); $j < $nb_pages; $j++)  
            {  
                $p = $j + 1;  
                $barre_nav .= " | <a href=\"". $url . $j ."\" title=\"page ". $p ."\">". $p ."</a>";  
            }  
        }  
           
             $page_affichee = "Page ". $page_affichee ." sur un total de ". $nb_pages ." pages.";  
    }  
    else  
    {  
            $barre_nav .= "page 1/1";  
    }  
   
    $debut = $page_en_cours * $nb_nouv_par_page;  
    $sql_n = "SELECT num FROM tabaaaa LIMIT ". $debut .", ". $nb_nouv_par_page .";";  
    $nouvelles = mysql_query($sql_n) or die (mysql_error ());  
?>  
<html  
<head>  
 
</head>  
<body>  
<?php echo($page_affichee); ?>  
<table>  
<tr >  
<td  >Numero :</FONT></td>  
 
</tr>  
<?php  
    while($nouv = mysql_fetch_assoc($nouvelles))  
    {  
?>  
 
<tr>  
<td><?php echo($nouv['num']); ?></td>  
</tr>  
<?php  
}  
?>  
</table>  
    <?php  
     
   /* on libère la mémoire */  
    mysql_free_result($resultat_1);  
    mysql_free_result($nouvelles);  
    /* On peut fermer la connexion à MySQL */  
    //mysql_close($connexion);  
    /* On affiche maintenant la barre de navigation */  
?>  
<p class="navigation"><?php echo($barre_nav); ?></p>  
<?php  
}  
else  
{  
     
?>  
<h3>Aucun bien n'a encore été ajouté</h3>  
<hr />  
<?php  
}  
}  
}  
 
else  
{  
 
?>  
<h3>Veuillez saisir le Login et le mot de passe <a href="idAdmin.htm">Retour</a></h3>  
<?php  
}  
?>  
 
</body>  
</html>  


---------------
polytech'Grenoble
Reply

Marsh Posté le 14-10-2006 à 22:49:12   

Reply

Marsh Posté le 15-10-2006 à 00:16:44    

Utilise les balises [code] stp.
Et il me semble que ton code est A REVOIR!

Reply

Marsh Posté le 15-10-2006 à 00:18:50    

Bonjour,  
J'ai un probleme pour garder la trace d'une session !  
lorsque l'admin se connecte seule la premiere page appariat, lorsqu il passe à la 2 eme, il n est plus connecté !  
je vous copie ma page .htm et ma page .php afin de ma'aider a trouvé le probleme :  
 
//page admin.htm  
 

Code :
  1. <form name="form1" method="POST" action="admin.php"> 
  2.  
  3.       <td>Login</td> 
  4.     <td> 
  5.         <input name="login" type="text" id="login"> 
  6.       </td> 
  7.       <td>Mot de passe</td> 
  8.     <td><input name="password" type="password" id="password"></td> 
  9. </form>


 
 
 
//page admin.php  
   

Code :
  1. <?php 
  2. session_start(); // Démarage de la session OBLIGATOIRE   
  3. if (!empty ($_POST['login']) && !empty ($_POST['password'])) 
  4. include ("connexion.php" ); 
  5. $login=$_POST['login']; 
  6. $password=$_POST['password']; 
  7. $identification = "SELECT COUNT(*) FROM `tableadmin` where login='".$login."' and motpasse='".$password."'"; 
  8. $req_id = mysql_query($identification) or die (mysql_error ()); 
  9. if (mysql_result ($req_id, 0) == 0) 
  10. ?> 
  11. <h3><font color="#FF0000">Login ou mot de passe invalide </font> 
  12. <h3> 
  13. <?php 
  14. else 
  15. //ok : admin reconnu   
  16.  
  17. $_SESSION['login'] = $login; 
  18. /* Paramètres de pagination */ 
  19. $nb_nouv_par_page = 2;             /* Nombre de nouvelles qui seront affichées sur chaque page */ 
  20. $url = "./admin.php?page="; 
  21. /* On détermine quelle est la page qui est actuellement affichée */ 
  22. $page_en_cours    = isset($_GET['page']) ? $_GET['page'] : 0; 
  23. $page_affichee    = ($page_en_cours + 1); 
  24. /* Requête pour compter les nouvelles présentes dans notre base de données */ 
  25. $sql_nb = "SELECT COUNT(*) FROM `bien` "; 
  26. /* Exécution de la requête et récupération du résultat */ 
  27. $resultat_1 = mysql_query($sql_nb); 
  28. $nb_nouvelles = mysql_result($resultat_1, 0); 
  29. /* Calcul du nombre total de pages : on arrondit à l'entier supérieur (ceil() ) */ 
  30. $nb_pages = ceil($nb_nouvelles / $nb_nouv_par_page); 
  31. if($nb_pages > 0) 
  32.     /* On définit une variable qui contiendra les données de navigation */ 
  33.     $barre_nav = ""; 
  34.     /* Nous avons au moins une page : avons nous besoin d'une barre de navigation ? */ 
  35.     if($nb_pages > 1) 
  36.     { 
  37.                 if($page_en_cours > 0) 
  38.         { 
  39.             for($i = 0; $i < $page_en_cours; $i++) 
  40.             { //$_SESSION['login'];   
  41.                 $p = $i + 1; 
  42.                 $barre_nav .= "<a href=\"". $url . $i ."\" title=\"page ". $p ."\">". $p ."</a> | "; 
  43.             } 
  44.         } 
  45.      
  46.         $barre_nav .= "<strong>". $page_affichee ."</strong>"; 
  47.         /* Enfin on affiche (s'il y a lieu) les liens vers les pages suivantes */ 
  48.         if(($page_affichee) < $nb_pages) 
  49.         { 
  50.             /* Il reste encore d'autres pages à afficher */ 
  51.             $nb_suivantes = $nb_pages - ($page_affichee); 
  52.             for($j = ($page_affichee); $j < $nb_pages; $j++) 
  53.             { 
  54.                 $p = $j + 1; 
  55.                 $barre_nav .= " | <a href=\"". $url . $j ."\" title=\"page ". $p ."\">". $p ."</a>"; 
  56.             } 
  57.         } 
  58.          
  59.              $page_affichee = "Page ". $page_affichee ." sur un total de ". $nb_pages ." pages."; 
  60.     } 
  61.     else 
  62.     { 
  63.             $barre_nav .= "page 1/1"; 
  64.     } 
  65.  
  66.     $debut = $page_en_cours * $nb_nouv_par_page; 
  67.     $sql_n = "SELECT num FROM tabaaaa LIMIT ". $debut .", ". $nb_nouv_par_page .";"; 
  68.     $nouvelles = mysql_query($sql_n) or die (mysql_error ()); 
  69. ?> 
  70. <html 
  71. <head> 
  72. </head> 
  73. <body> 
  74. <?php echo($page_affichee); ?> 
  75. <table> 
  76. <tr > 
  77. <td  >Numero :</FONT></td> 
  78. </tr> 
  79. <?php 
  80.     while($nouv = mysql_fetch_assoc($nouvelles)) 
  81.     { 
  82. ?> 
  83. <tr> 
  84. <td><?php echo($nouv['num']); ?></td> 
  85. </tr> 
  86. <?php 
  87. ?> 
  88. </table> 
  89.     <?php 
  90.    
  91.    /* on libère la mémoire */ 
  92.     mysql_free_result($resultat_1); 
  93.     mysql_free_result($nouvelles); 
  94.     /* On peut fermer la connexion à MySQL */ 
  95.     //mysql_close($connexion);   
  96.     /* On affiche maintenant la barre de navigation */ 
  97. ?> 
  98. <p class="navigation"><?php echo($barre_nav); ?></p> 
  99. <?php 
  100. else 
  101.    
  102. ?> 
  103. <h3>Aucun bien n'a encore été ajouté</h3> 
  104. <hr /> 
  105. <?php 
  106. else 
  107. ?> 
  108. <h3>Veuillez saisir le Login et le mot de passe <a href="idAdmin.htm">Retour</a></h3> 
  109. <?php 
  110. ?> 
  111. </body> 
  112. </html>


---------------
polytech'Grenoble
Reply

Marsh Posté le 15-10-2006 à 00:22:10    

Bah tu fais toujours un test sur les variable $_POST et non pas sur les variables de sessions, ca rique pas de marcher.
Et si j'ai mal compris ton code c'est que tu l'as mal indenté.
 
Et franchemen tu devrais lire dux ou trois tutos sur les espaces membre et php ça te ferais pas de mal.

Reply

Marsh Posté le 15-10-2006 à 00:25:13    

j'ai demandé un aide, j ai deja lis des tutos !
stp t as mon code, essayes d inclure les variables de session pour que ça marche !
Merci


---------------
polytech'Grenoble
Reply

Marsh Posté le 15-10-2006 à 00:27:33    

Stp, tu lis le règlement du forum, tu suis quelque conseils et tu vas RE lire les BONS tuto. Bonne soirée.


Message édité par dwogsi le 15-10-2006 à 00:28:06
Reply

Marsh Posté le 15-10-2006 à 00:28:43    

Merci pout ton aide,
c ça l aide...


---------------
polytech'Grenoble
Reply

Marsh Posté le 15-10-2006 à 00:29:28    

En plus tu avs pas faire un boulot a ma place, c juste 2 lignes pour que me programme fonctionne !


---------------
polytech'Grenoble
Reply

Marsh Posté le 15-10-2006 à 00:32:49    

Bon je vais essayer...
Ce que je te disais c'est que tu ne fais le test que sur les variable envoyé via POST, c'est à dire que tu ne test que ce qui  a pu être envoyé via un formulaire. Or tu voudrais que ça fonctionne aussi avec les sessions, il te suffit donc de faire le test avec les variables de sessions!
 
Si tu ne comprend pas ce que je raconte, et bien les bases sont à revoir c'est tout. Un langage de prog, si simple soit-il, ça s'apprend!!

Reply

Marsh Posté le 15-10-2006 à 00:36:47    

Merci bcp,
Mnt t as dis klk chose d interessant,
bonne fin de soirée, et comme t as dis, je vais revoir les bases  ...


---------------
polytech'Grenoble
Reply

Marsh Posté le 15-10-2006 à 00:36:47   

Reply

Marsh Posté le 15-10-2006 à 12:10:30    

Je serai tenté de dire que ton code est plutot... dangereux...
 
TU fais une requete dans la BDD directement avec des valeur recuperé de $_POST... Un traitement s'impose avant bondiou. Sinon y'a un rigolo qui va te faire de belles injections sql ;)


---------------
Comme dirait quelqu'un de beaucoup plus avisé que moi, quelquefois c'est toi qui cognes le bar mais d'autres fois, et ben, c'est le bar qui te cogne.
Reply

Marsh Posté le 15-10-2006 à 16:34:02    

j'ai pas pu trouvé la solution pour garder la sesson! . à l'aide !, j a lis pas mal de tutoriaux mais y a pas un qui montre l'utilisation de mon script (affichage par page).
Mr. InTh3WinDD D si t asune version amélioré, veuiller à me le dire et merci.


---------------
polytech'Grenoble
Reply

Marsh Posté le 15-10-2006 à 17:01:32    

php.net est ton amis :)
 
Je te met sur la voie:  
 
mysql_real_escape_string


---------------
Comme dirait quelqu'un de beaucoup plus avisé que moi, quelquefois c'est toi qui cognes le bar mais d'autres fois, et ben, c'est le bar qui te cogne.
Reply

Marsh Posté le 15-10-2006 à 17:14:04    

Etudier le langage php (et pourquoi pas le français aussi!) car, comme je l'ais dit, un langage si simple soit-il ça s'apprend :
http://www.siteduzero.com/
http://www.php.net/
 
Ensuite revoir entièrement ton code.
 
Et comme l'a dit InTh3WinDD D voir la fonction mysql_real_escape_string (si MySQL tu utilise) pour éviter les failles de sécu type SQL Injection : http://fr.php.net/mysql_rela_escpe_string
 
Un petit tour du côté des sessions devrait te rendre service également : http://fr.php.net/session
 
Et pour le reste il y a aussi :  [:alkatraz]
Et mastercard!  [:chenaillou]
 
Sinon reste à y mettre un peu de bonne volonté, de logique et le tour est joué.


Message édité par dwogsi le 15-10-2006 à 17:16:04
Reply

Marsh Posté le 15-10-2006 à 17:25:21    

un autre conseil pour ton code,  
 
- index.php page par defaut, visible par tout le monde avec formulaire d'inscription si pas de $_SESSION[user_id] soit un lien vers admin.php s'il est auth. (ou un petit header("Location: admin.php" );exit; )
 
- login.php qui fait le traitement de l'auth. (tu envoie ton formulaire dessus (action="login.php" )
 
- admin.php verif de la session, inverse de l'autre page..
Si il existe un $_SESSION[user_id] alors tu affiche les données auquelles il a droit, sinon tu fais un petit header("Location: index.php" );exit; ...
 
Sur ton index.php tu fais un sessionstart
+ test s'il l'user est pas deja auth ... si Oui > Go admin.php
 
Sur ton login.php tu fais un sessionstart
+ test si l'user est pas deja auth ... si Oui > Go admin.php
+ test si les POSTlogin et POSTpass sont spécifiéss ... si Oui > Traitement de verification du login/pass ...  
-> si Ok > tu met l'id de l'user dans $SESSIONuserid
-> + Go sur admin.php
-> Si Ko > Go sur index.php (avec message d'erreur si possible)  
 
Tu y verrais deja plus clair.
 
Sinon deja apres réindentation de ton code certain truc ne sont pas logique, tu affiche le html/body que s'il ya un POST login, mais tu affiche le /html /body tout le temps... etc..
 
Et pour ton probleme le truc c'est comme il l'a deja ete dis, tu test $_POST, qui n'existe que lorsque tu viens d'un formulaire passé en POST.

Reply

Sujets relatifs:

Leave a Replay

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