Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1528 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1457317
younes371
Posté le 14-10-2006 à 22:49:12  profilanswer
 

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
mood
Publicité
Posté le 14-10-2006 à 22:49:12  profilanswer
 

n°1457343
dwogsi
Défaillance cérébrale...
Posté le 15-10-2006 à 00:16:44  profilanswer
 

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

n°1457347
younes371
Posté le 15-10-2006 à 00:18:50  profilanswer
 

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
n°1457351
dwogsi
Défaillance cérébrale...
Posté le 15-10-2006 à 00:22:10  profilanswer
 

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.

n°1457357
younes371
Posté le 15-10-2006 à 00:25:13  profilanswer
 

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
n°1457359
dwogsi
Défaillance cérébrale...
Posté le 15-10-2006 à 00:27:33  profilanswer
 

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
n°1457360
younes371
Posté le 15-10-2006 à 00:28:43  profilanswer
 

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


---------------
polytech'Grenoble
n°1457361
younes371
Posté le 15-10-2006 à 00:29:28  profilanswer
 

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


---------------
polytech'Grenoble
n°1457364
dwogsi
Défaillance cérébrale...
Posté le 15-10-2006 à 00:32:49  profilanswer
 

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!!

n°1457367
younes371
Posté le 15-10-2006 à 00:36:47  profilanswer
 

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
mood
Publicité
Posté le 15-10-2006 à 00:36:47  profilanswer
 

n°1457455
Kyfun
Les choses se passent !
Posté le 15-10-2006 à 12:10:30  profilanswer
 

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.
n°1457559
younes371
Posté le 15-10-2006 à 16:34:02  profilanswer
 

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
n°1457571
Kyfun
Les choses se passent !
Posté le 15-10-2006 à 17:01:32  profilanswer
 

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.
n°1457576
dwogsi
Défaillance cérébrale...
Posté le 15-10-2006 à 17:14:04  profilanswer
 

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
n°1457579
FLK
Posté le 15-10-2006 à 17:25:21  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
Sessionprobleme de session
variable de session pour un sous domaineHistoire de session sous IE
Partage de session entre applications .NETproblème de php session
Lien entre session et cookieModifier plusieurs pages html à la volée via "rechercher/remplacer"
Session qui n'en fait qu'à sa têtetracer des rectangles sur plusieurs pages
Plus de sujets relatifs à : Garder la trace d'une session pour toutes les pages !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR