Redirection avec header

Résolu
Zedrof Messages postés 189 Statut Membre -  
Zedrof Messages postés 189 Statut Membre -
Bonjour,Est ce quelqu'un pourrait m'aider puisque après mon authentification ça me renvoi a l'index principale mais en voulant me connecte aux autres fichiers ça passe pas du tout vraiment vos aides sont les bienvenues:
<?php
 include "config/connexion.php";      
 include "lib/fonction_date.php";

if(empty($_SESSION['user']))//ce code permet de mettre le fichier login en acceuil au lieu de index
header('Location: //localhost/Parc_informatique/login.php');

echo "Bienvenue <b> ".$_SESSION['user']."</b>"; 
//le fichier index.php permet de lancer ts les fichiers de l'application

?>



<html>
 <head>
  <meta http-equiv="content-type"
   content="text/html; charset=utf-8"/>
 <link href="web/css/style.css" media="screen"
  type="text/css" rel="stylesheet"/>
 <script src="web/js/jquery.js" type="text/javascript"></script>
 <script src="web/js/prototype.js" type="text/javascript"></script>
 <script src="web/js/javascript.js" type="text/javascript"></script>  
 <link rel="stylesheet" href="web/js/jquery-ui.css" />
    <script src="web/js/jquery-1.8.3.js"></script>
    <script src="web/js/jquery-ui.js"></script>
    <link rel="stylesheet" href="/resources/demos/style.css" /> 
  <title> Gestion du Parc Informatique de RMCR</title>
  
 </head>
 <body> 
  <div id="menu"> // declaration des autres fichiers depuis modules 
  <a href="index.php?page=modules/historique/index.php"><strong>Historique</strong></a>
  <a href="index.php?page=modules/mat/index.php"><strong>Materiel Affichage</strong></a>
  <a href="index.php?page=modules/user/index.php"><strong>Utilisateur</strong></a>
  <a href="index.php?page=modules/departement/index.php"><strong>Departement</strong></a>
  
  </div>
  <div id="entete"><img src="web/images/logo2.jpg"width="100px" height="59px"></div>
  <div id="corps">
  <?php
   if (isset($_GET['page'])){
    include ($_GET['page']);
   }
   ?>
  </div>
  
  
  
  
  <div id="pied"><strong>© RMCR 2014 </strong></div>
 </body>
</html>

 


22 réponses

  • 1
  • 2
Résumé de la discussion

Le fil traite un souci d'authentification PHP où, après connexion, l'utilisateur reste sur la page d'accueil et n'accède pas correctement aux modules via les liens générant l'inclusion de pages. Plusieurs réponses évoquent une gestion des sessions incorrecte et une redirection incohérente: la condition d'accès et l'affichage éventuel de $_SESSION['user'] peuvent s'exécuter sans authentification, autorisant des accès non souhaités. Des conseils préconisent l'inclusion correcte du fichier de connexion et l'initialisation fiable de la session, puis un contrôle de connexion avant l'affichage des contenus protégés, avec des messages de débogage temporaires. En dernier lieu, certains échanges signalent que des échos affichant les variables de session apparaissent; leur suppression ou déplacement dans le flux d'authentification peut être nécessaire pour éviter des messages persistants.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Ne te manquerait il pas le
     session_start(); 
    au début de ta page ??
    0
  2. Zedrof Messages postés 189 Statut Membre 1
     
    j les fais ca me renvoi directement sur l'index sans demande d'authentification:

    code login.php:
    <?php
    include "config/connexion.php";						
    	include "lib/fonction_date.php";
    	?>
    <form action= "session.php " method= "POST">
    <table align="center" width="300px">
    		<tr>
    		<th colspan="2">Authentification</th>
    		</tr><br/><br/>
    		<tr>
    		<td>user</td>
    		<td><input name="user" type="text"/></td>
    		</tr><br/><br/>
    		
    		
    		<td>Mot de Passe</td>
    		<td><input name="pass" type="password"/></td>
    		</tr><br/><br/>
    		<tr>
    		<td colspan="2">
    		<input type="submit" value="connexion"/></td>
    		
    		</tr>
    		</table>
    		</form>


    j'ai un code session.php:
    <?php
    
    session_start();
    $user=$_POST['user'];
    $pass=$_POST['pass'];
    //ici on a juste supposé un login, tu pe faire une requete qui va verifier dans ta base si le login existe.
    if (($user=='zedrof' && $pass=='mariko')){
    $_SESSION['user']=$user;
    include"index.php";
    exit;
    }
    else{
    echo "Login ou mot de passe incorrect!!!";
    include "login.php";
    }


    j'ai un code index principaleindex.php:
    <?php
    
    include "config/connexion.php";						
    include "lib/fonction_date.php";
    
    if(empty($_SESSION['user']))//ce code permet de mettre le fichier login en acceuil au lieu de index
    header('Location: //localhost/Parc_informatique/login.php');
    echo "Bienvenue <b> ".$_SESSION['user']."</b>"; 
    //le fichier index.php permet de lancer ts les fichiers de l'application
    ?>
    <html>
    	<head>
    		<meta http-equiv="content-type"
    			content="text/html; charset=utf-8"/>
    	<link href="web/css/style.css" media="screen"
    		type="text/css" rel="stylesheet"/>
    	<script src="web/js/jquery.js" type="text/javascript"></script>
    	<script src="web/js/prototype.js" type="text/javascript"></script>
    	<script src="web/js/javascript.js" type="text/javascript"></script>		
    	<link rel="stylesheet" href="web/js/jquery-ui.css" />
        <script src="web/js/jquery-1.8.3.js"></script>
        <script src="web/js/jquery-ui.js"></script>
        <link rel="stylesheet" href="/resources/demos/style.css" />	
    		<title> Gestion du Parc Informatique de RMCR</title>
    		
    	</head>
    	<body>
    		<div id="menu">
    		<a href="index.php?page=modules/historique/index.php"><strong>Historique</strong></a>
    		<a href="index.php?page=modules/mat/index.php"><strong>Materiel Affichage</strong></a>
    		<a href="index.php?page=modules/user/index.php"><strong>Utilisateur</strong></a>
    		<a href="index.php?page=modules/departement/index.php"><strong>Departement</strong></a>
    		
    		</div>
    		<div id="entete"><img src="web/images/logo2.jpg"width="100px" height="59px"></div>
    		<div id="corps">
    		<?php
    			if (isset($_GET['page'])){
    				include ($_GET['page']);
    			}
    			?>
    		</div>
    		
    		
    		
    		
    		<div id="pied"><strong>© RMCR 2014 </strong></div>
    	</body>
    </html>
    
    	
    0
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Ajoutes un
    print_r($_SESSION);
    

    En haut de tes pages.. et regarde ce qu'il te donne.......

    0
  4. Zedrof Messages postés 189 Statut Membre 1
     
    toujours averc
    print_r($_SESSION);print_r($_SESSION);
    
    mais la reidrection de ces pages me donne erreur

    <div id="menu">
    		<a href="index.php?page=modules/historique/index.php"><strong>Historique</strong></a>
    		<a href="index.php?page=modules/mat/index.php"><strong>Materiel Affichage</strong></a>
    		<a href="index.php?page=modules/user/index.php"><strong>Utilisateur</strong></a>
    		<a href="index.php?page=modules/departement/index.php"><strong>Departement</strong></a>
    		
    		</div>

    mom problemes c'est ces href
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      mom problemes c'est ces href


      DOnc.. ça ??? :
      if (isset($_GET['page'])){
          include ($_GET['page']);
         }
         ?>
      


      Tu as essayé de faire un echo de ta variable pour voir ?
      if (isset($_GET['page'])){
       echo "<br> PAGE = ".$_GET['page'];
        include ($_GET['page']);
         }
         ?>
      
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Zedrof Messages postés 189 Statut Membre 1
     
    ca me renvoi toujour sur le fichier login.php puis que j vois l'index principale mais en voulant l'ouvrez ça me le login.php
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      J'ai un peu de mal à te comprendre ........

      Reprenons .....
      Ca te redirige systématiquement vers la page LOGIN.PHP ?? c'est bien ça ???
      Donc.. ton souci viendrait surement de ce code là :
      if(empty($_SESSION['user']))//ce code permet de mettre le fichier login en acceuil au lieu de index
      header('Location: //localhost/Parc_informatique/login.php');
      

      Donc... que ta variable $_SESSION['user'] est vide .......

      Donc....
      Il faut, que sur TOUTES tes pages .. tu es bien démarré les SESSIONS .. ( session_start(); )

      Par contre.. dans ta page de connexion.(session.php: ).. tu refais un INCLUDE de ta page index ??
      include"index.php";
      

      ... ce n'est pas un include à mon avis .. mais une redirection qu'il te faut ...
       header("Location: index.php");
      


      Si tes soucis persistes .....
      Dis nous avec exactitude ce qui ne fonctionne pas ...
      ( c'est à dire : Tu es sur quelle page ? .. tu cliques sur quoi ? il se passe quoi ? tu devrais avoir quoi ? ....)
      0
  7. Zedrof Messages postés 189 Statut Membre 1
     
    j'ai mis session_start(); en haut de tout mes pages et changer

    include"index.php";
    en

    header("Location: index.php");
    
    

    donc elle renvoi sur l'application sans authentification mais tout les pages
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      - Quelle est ta première page de ton site ?
      - Quel code contient-elle ?
      - Y as tu mis, pour tester, un
      print_r($_SESSION); 
      ?
      => Si oui.. qu'est-ce que ça t'affiche ?
      0
  8. Zedrof Messages postés 189 Statut Membre 1
     
    c'est authentification la premiere page:
    login.php
    
    <?php
    
    include "config/connexion.php";      
     include "lib/fonction_date.php";
     ?>
    <form action= "session.php " method= "POST">
    <table align="center" width="300px">
      <tr>
      <th colspan="2">Authentification</th>
      </tr><br/><br/>
      <tr>
      <td>user</td>
      <td><input name="user" type="text"/></td>
      </tr><br/><br/>
      
      
      <td>Mot de Passe</td>
      <td><input name="pass" type="password"/></td>
      </tr><br/><br/>
      <tr>
      <td colspan="2">
      <input type="submit" value="connexion"/></td>
      
      </tr>
      </table>
      </form>


    c'est session qui fait l'ouverture de session:c'est ici que j'ai print_r($_SESSION)
    code session.php
    <?php
    
    
    
    print_r($_SESSION);
    $user=$_POST['user'];
    $pass=$_POST['pass'];
    //ici on a juste supposé un login, tu pe faire une requete qui va verifier dans ta base si le login existe.
    if (($user=='zedrof' && $pass=='mariko')){
    $_SESSION['user']=$user;
    header("Location: index.php");
    exit;
    }
    else{
    echo "Login ou mot de passe incorrect!!!";
    include "login.php";
    }
      
    


    session redirige vers fichiers index.php qui est la source de tout les autres fichiers

    code index.php
    <?php
    
    include "config/connexion.php";      
    include "lib/fonction_date.php";
    session_start();
    if(empty($_SESSION['user']))//ce code permet de mettre le fichier login en acceuil au lieu de index
    header('Location: login.php');
    echo "Bienvenue <b> ".$_SESSION['user']."</b>"; 
    //le fichier index.php permet de lancer ts les fichiers de l'application
    ?>
    <html>
     <head>
      <meta http-equiv="content-type"
       content="text/html; charset=utf-8"/>
     <link href="web/css/style.css" media="screen"
      type="text/css" rel="stylesheet"/>
     <script src="web/js/jquery.js" type="text/javascript"></script>
     <script src="web/js/prototype.js" type="text/javascript"></script>
     <script src="web/js/javascript.js" type="text/javascript"></script>  
     <link rel="stylesheet" href="web/js/jquery-ui.css" />
        <script src="web/js/jquery-1.8.3.js"></script>
        <script src="web/js/jquery-ui.js"></script>
        <link rel="stylesheet" href="/resources/demos/style.css" /> 
      <title> Gestion du Parc Informatique de RMCR</title>
      
     </head>
     <body>
      <div id="menu">
      <a href="index.php?page=modules/historique/index.php"><strong>Historique</strong></a>
      <a href="index.php?page=modules/mat/index.php"><strong>Materiel Affichage</strong></a>
      <a href="index.php?page=modules/user/index.php"><strong>Utilisateur</strong></a>
      <a href="index.php?page=modules/departement/index.php"><strong>Departement</strong></a>
      
      </div>
      <div id="entete"><img src="web/images/logo2.jpg"width="100px" height="59px"></div>
      <div id="corps">
      <?php
       if (isset($_GET['page'])){
        include ($_GET['page']);
       }
       ?>
      
       
      </div>
      
      
      
      
      <div id="pied"><strong>© RMCR 2014 </strong></div>
     </body>
    </html>
    
     
    0
  9. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Teste ça et dis nous ce que ça te donne :

    <?php
    session_start();
    include "config/connexion.php";      
    include "lib/fonction_date.php";
    
    //LE TEMPS DES TESTS:
     echo "<pre>Variables de session :<br>";
     print_r($_SESSION);
     echo "</pre>";
    //----------------
    $User = isset($_SESSION['user'])?$_SESSION['user']:NULL;
    
    if(empty($User)) {//ce code permet de mettre le fichier login en acceuil au lieu de index
     //LE TEMPS DES TESTS: on desactive cette ligne :
     //header('Location: login.php');
     echo "<pre> SESSION['user'] est vide ! </pre>";
    }
    echo "Bienvenue <b> ".$User."</b>"; 
    //le fichier index.php permet de lancer ts les fichiers de l'application
    ?>
    <html>
     <head>
      <meta http-equiv="content-type"
       content="text/html; charset=utf-8"/>
     <link href="web/css/style.css" media="screen"
      type="text/css" rel="stylesheet"/>
     <script src="web/js/jquery.js" type="text/javascript"></script>
     <script src="web/js/prototype.js" type="text/javascript"></script>
     <script src="web/js/javascript.js" type="text/javascript"></script>  
     <link rel="stylesheet" href="web/js/jquery-ui.css" />
        <script src="web/js/jquery-1.8.3.js"></script>
        <script src="web/js/jquery-ui.js"></script>
        <link rel="stylesheet" href="/resources/demos/style.css" /> 
      <title> Gestion du Parc Informatique de RMCR</title>
      
     </head>
     <body>
      <div id="menu">
      <a href="index.php?page=modules/historique/index.php">
      <strong>Historique</strong>
     </a>
      <a href="index.php?page=modules/mat/index.php">
      <strong>Materiel Affichage</strong>
     </a>
      <a href="index.php?page=modules/user/index.php">
      <strong>Utilisateur</strong>
     </a>
      <a href="index.php?page=modules/departement/index.php">
      <strong>Departement</strong>
     </a>  
      </div>
     
      <div id="entete">
      <img src="web/images/logo2.jpg"
         width="100px" 
        height="59px">
     </div>
      <div id="corps">
      <?php
     $page = isset($_GET['page'])?$_GET['page']:NULL;
     echo "<br> =>>> Page dans la variable GET = ".$page."<br>";
       if ($page){
       // on vérifie que la page existe avant d'essayer de l'inclure:
      if(file_exists($page)){
          include($page);
        }else{
        echo "Error ! La page ".$page." n'existe pas !";
      }
      }
       ?>
      </div>
    
      <div id="pied"><strong>© RMCR 2014 </strong></div>
     </body>
    </html>
    


    Avant de poser une question, merci de lire la charte du site.
    Cordialement, Jordane
    0
  10. Zedrof Messages postés 189 Statut Membre 1
     
    c'est ce que ca me donne sans login directement la page index principale
    Variables de session :
    Array
    (
    [user] => zedrof
    )

    Bienvenue zedrof
    Historique Materiel Affichage Utilisateur Departement

    =>>> Page dans la variable GET =
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Ben oui.. la variable de SESSION est déjà renseignée ........ c'est donc normal que tu n'aies pas besoin de te connecter....

      Ferme complétement ton navigateur internet .. et retourne ensuite sur ta page.. normalement cette fois tu devrais arriver sur la page de login ....
      0
  11. Zedrof Messages postés 189 Statut Membre 1
     
    j'ai redemarrer l'ordinateur jusqu'a present ca affiche la meme
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Redémarré ... l'ordinateur ??

      jusqu'a present ca affiche la meme

      La même ... quoi ???

      Tu as toujours :

      Variables de session :
      Array
      (
      [user] => zedrof
      )


      Par contre... maintenant... tu peux " décommenter" la ligne :
      if(empty($User)) {//ce code permet de mettre le fichier login en acceuil au lieu de index
       //LE TEMPS DES TESTS: on desactive cette ligne :
       //header('Location: login.php');
       echo "<pre> SESSION['user'] est vide ! </pre>";
      }
      


      et donc avoir :
      if(empty($User)) {//ce code permet de mettre le fichier login en acceuil au lieu de index
       header('Location: login.php');
      }
      
      0
  12. Zedrof Messages postés 189 Statut Membre 1
     
    j'ai desactive la ligne
    header('Location: login.php');
    mais j parvient à acceder a la page login mais avoir saisir le login et le mot de passe ça te renvoi encore sur la page login.

    Authentification
    user
    Mot de Passe
    connexion
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Dans la page session. Php.. ajoute un sessions_start ();
      0
      1. Zedrof Messages postés 189 Statut Membre 1 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        tout marche mais sans login et des petits messages sont surl'ecran c'est ce que j comprend pas
        en haut
        Variables de session :
        Array
        (
        [user] => zedrof
        )

        dans le corp de la page
        =>>> Page dans la variable GET = modules/departement/index.php
        0
  13. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     

    des petits messages sont surl'ecran c'est ce que j comprend pas

    Ben... c'est ce que j'ai ajouté "le temps des tests" ....

    Par exemple :
    //LE TEMPS DES TESTS:
     echo "<pre>Variables de session :<br>";
     print_r($_SESSION);
     echo "</pre>";
    //----------------
    


    Tu peux le supprimer si tu veux.

    Par contre :

    tout marche mais sans login

    C'est à dire ???

    0
    1. Zedrof Messages postés 189 Statut Membre 1
       
      j'acceder directement dans a lapage acceuil de mon application sans demande de login
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Tu peux nous repostere le code de la page d'accueil ?
      0
  14. Zedrof Messages postés 189 Statut Membre 1
     
    code page d'acceuil:
    <?php
    session_start();
    include "config/connexion.php";      
    include "lib/fonction_date.php";
    
    //LE TEMPS DES TESTS:
     echo "<pre>Variables de session :<br>";
     print_r($_SESSION);
     echo "</pre>";
    //----------------
    $User = isset($_SESSION['user'])?$_SESSION['user']:NULL;
    
    if(empty($User)) {//ce code permet de mettre le fichier login en acceuil au lieu de index
     //LE TEMPS DES TESTS: on desactive cette ligne :
     header('Location: login.php');
     echo "<pre> SESSION['user'] est vide ! </pre>";
    }
    echo "Bienvenue <b> ".$User."</b>"; 
    //le fichier index.php permet de lancer ts les fichiers de l'application
    ?>
    <html>
     <head>
      <meta http-equiv="content-type"
       content="text/html; charset=utf-8"/>
     <link href="web/css/style.css" media="screen"
      type="text/css" rel="stylesheet"/>
     <script src="web/js/jquery.js" type="text/javascript"></script>
     <script src="web/js/prototype.js" type="text/javascript"></script>
     <script src="web/js/javascript.js" type="text/javascript"></script>  
     <link rel="stylesheet" href="web/js/jquery-ui.css" />
        <script src="web/js/jquery-1.8.3.js"></script>
        <script src="web/js/jquery-ui.js"></script>
        <link rel="stylesheet" href="/resources/demos/style.css" /> 
      <title> Gestion du Parc Informatique de RMCR</title>
      
     </head>
     <body>
      <div id="menu">
      <a href="index.php?page=modules/historique/index.php">
      <strong>Historique</strong>
     </a>
      <a href="index.php?page=modules/mat/index.php">
      <strong>Materiel Affichage</strong>
     </a>
      <a href="index.php?page=modules/user/index.php">
      <strong>Utilisateur</strong>
     </a>
      <a href="index.php?page=modules/departement/index.php">
      <strong>Departement</strong>
     </a>  
      </div>
     
      <div id="entete">
      <img src="web/images/logo2.jpg"
         width="100px" 
        height="59px">
     </div>
      <div id="corps">
      <?php
     $page = isset($_GET['page'])?$_GET['page']:NULL;
     echo "<br> =>>> Page dans la variable GET = ".$page."<br>";
       if ($page){
       // on vérifie que la page existe avant d'essayer de l'inclure:
      if(file_exists($page)){
          include($page);
        }else{
        echo "Error ! La page ".$page." n'existe pas !";
      }
      }
       ?>
      </div>
    
      <div id="pied"><strong>© RMCR 2014 </strong></div>
     </body>
    </html>
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      ok. Et quand tu arrives sur cette page ... qu'est ce que ça t'affiche ??
      Tu as quelque chose du genre
      :


      Variables de session :
      Array
      (
      [user] => zedrof
      )



      Si oui... tu as déjà ta variable de session de renseignée... donc c'est normal que tu ne sois pas redirigé vers ta page de connexion......
      0
      1. Zedrof Messages postés 189 Statut Membre 1 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        oui c'est comme ça que ca affiche
        Variables de session :
        Array
        (
        [user] => zedrof
        )
        0
      2. Zedrof Messages postés 189 Statut Membre 1 > Zedrof Messages postés 189 Statut Membre
         
        ca va maintenant mais il y a toujour un petit message a de:

        Array ( [user] => zedrof ) Bienvenue zedrof

        et c'est dont je veut supprimer mais j vois pas la source
        Array ( [user] => zedrof )
        0
      3. Zedrof Messages postés 189 Statut Membre 1 > Zedrof Messages postés 189 Statut Membre
         
        Mais ce que si j peut remplace cette partie dans le code session.php puisque c'est zedrof seul qui peut se connecter:
        if (($user=='zedrof' && $pass=='mariko')){
        $_SESSION['user']=$user;
        header("Location: index.php");
        exit;
        par une requette qui peut permettre tout utilisateur à se connecter avec un login et un mot de mt de passe
        0
      4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Zedrof Messages postés 189 Statut Membre
         
        Pour supprimer ça .. il faut effacer ( ou commenter) les lignes
        //LE TEMPS DES TESTS:
         echo "<pre>Variables de session :<br>";
         print_r($_SESSION);
         echo "</pre>";
        
        0
  15. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Pour remplacer la connexion via un USER pré-défini comme tu l'as fait par une requête...
    Il te suffit de faire un SELECT dans ta BDD pour vérifier si le user existe..

    Déjà.. il faudrait que nous sachions comment tu te connectes à ta BDD...
    Tu utilises quoi ? Mysql / MysqlI / PDO ??
    Montres ton code de connexion à ta BDD
    0
  16. Zedrof Messages postés 189 Statut Membre 1
     
    code de connexion ala base:

    <?php
    
    // pour se connecter a notre base sous phpmyadmin
    
    $hote='localhost';
    $base='parc';
    $utilisateur='root';
    $mot_de_passe='';
    $connexion= new PDO('mysql:host='.$hote.';
    					dbname='.$base, $utilisateur,$mot_de_passe);
    
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Ok donc tu utilises la PDO.

      Donc maintenant... tu dois avoir une table contenant les utilisateurs qui peuvent se connecter je suppose..
      Une table 'user' .... avec Login , Passord , nom , prenom ...etc.....
      Il faut donc que tu fasses, dans ta page session.php, un SELECT du genre :

      SELECT * FROM tableUser
      WHERE login = '$user'
      AND password = '$password'
      


      Et si la requête te retourne bien un résultat..alors c'est qu'il peut se connecter...
      0
    2. Zedrof Messages postés 189 Statut Membre 1
       
      j'ai prepare une requette

      code session.php
      <?php
      
      
      session_start();
      print_r($_SESSION);
      $user=$_POST['user'];
      $pass=$_POST['pass'];
      //ici on a juste supposé un login, tu pe faire une requete qui va verifier dans ta base si le login existe.
      $req= $connexion->prepare("SELECT * FROM table_utilisateur
      WHERE user = '$user'
      AND pass = '$pass'");
      $resultat = $req->execute();
      if ($resultat!==1){
      $_SESSION['user']=$user;
      header('Location: index.php');
      exit;
      }
      else{
      echo "Login ou mot de passe incorrect!!!";
      include "login.php";
      }


      mais ca me donne
      Array ( )
      ( ! ) Notice: Undefined variable: connexion in C:\wamp\www\Parc_informatique\session.php on line 9
      Call Stack
      # Time Memory Function Location
      1 0.0043 370912 {main}( ) ..\session.php:0

      ( ! ) Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\Parc_informatique\session.php on line 9
      Call Stack
      # Time Memory Function Location
      1 0.0043 370912 {main}( ) ..\session.php:0
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Zedrof Messages postés 189 Statut Membre
         
        Forcément.....
        Tu dois inclure ta page contenant la connexion à ta BDD ....
        include "config/connexion.php"; 



        Mais.. dis voir... loin de moi l'idée d'être désagréable... mais il faudrait peut être que tu maitrise un minimum les bases du PHP avant de te lancer le dev non ?
        Tu as suivi des tutos sur le net ????
        Car pour l'instant.. toutes les questions ou presque... que tu poses .. sont du niveau "débutant" ....
        0
  17. Zedrof Messages postés 189 Statut Membre 1
     
    non j l'ai juste fais en classe de 4eme MIAGE donc j'ai aimé la matière donc j suis dans un e/se qui m'as demande de faire ça c'est pourquoi j me jeter sans suivi beaucoup de cours costo sur php et Mysql mais avec vraiment l'aides du forums j'ai pu le faire c'est la deniere et j compter commence à prendre des cours costo là dessus mais maintena :

    tout login et mot de passe saisi acceder sans controle
    0
  18. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     

    mais avec vraiment l'aides du forums j'ai pu le faire

    Le truc.. c'est que pour l'instant tu copie/colle le code que je te donne... sans le comprendre...
    Ce n'est surement pas comme ça que tu vas apprendre !


    c'est la deniere et j compter commence à prendre des cours costo là dessus

    Le problème.. c'est que les notions dont je te parle ... ne sont pas d'un HAUT niveau...
    Ce sont les BASES à connaitre avant même de commencer à coder !

    Enfin bref... je veux bien continuer à essayer de t'aider ... mais le souci... c'est que je ne comprend pas ce que tu dis :
    mais maintena :
    tout login et mot de passe saisi acceder sans controle


    Je pense qu'il faut que tu modifies le code de tes pages de la manière suivante:

    Dans ta page : session.php
    <?php
    session_start();
    include "config/connexion.php";
    
    //--------------------------------------
    // Le temps des tests :
    echo "<pre> Variables POST :<br>";
    print_r($_POST);
    echo "</pre>";
    //--------------------------------------
    
    //********************************//
    // Recupération des variables :
    //********************************//
    $user=isset($_POST['user']) && $_POST['user'] !=''?$_POST['user']:NULL;
    $pass=isset($_POST['pass']) && $_POST['pass'] !=''?$_POST['pass']:NULL;
    
    //********************************//
    // Préparation de la requete:
    //********************************//
    $sql = "SELECT * FROM table_utilisateur
          WHERE user = '".$user."'
          AND pass = '".$pass."'";
         
    //--------------------------------------
    // Le temps des tests :
    echo "<pre> La Requete est :<br>";
    echo $sql;
    echo "</pre>";
    //--------------------------------------
    
    //********************************//
    // Execution de la requete:
    //********************************//     
    $req= $connexion->prepare($sql);
    $resultat = $req->execute();
    
    if ($resultat){
     $_SESSION['user']=$user;
     unset($_SESSION['error_login']);
     header('Location: index.php');
     exit;
    }else{
     $_SESSION['error_login'] = "Login ou mot de passe incorrect!!!";
     header('Location: login.php');
    }
    ?>
    


    PAGE Login.php

    <?php
    session_start();
    include "config/connexion.php";      
    include "lib/fonction_date.php";
    
    //Recuperation du message d'erreur s'il existe
    $msgError = isset($_SESSION['error_login']) ?$_SESSION['error_login']:NULL;
    
    if($msgError){
       echo "<div id='zone_message_erreur'>
          <pre>".$msgError."</pre> 
          </div>";
      }
     ?>
    
    <form action= "session.php " method= "POST">
    <table align="center" width="300px">
      <tr>
      <th colspan="2">Authentification</th>
      </tr><br/><br/>
      <tr>
      <td>user</td>
      <td><input name="user" type="text"/></td>
      </tr><br/><br/>
      
      
      <td>Mot de Passe</td>
      <td><input name="pass" type="password"/></td>
      </tr><br/><br/>
      <tr>
      <td colspan="2">
      <input type="submit" value="connexion"/></td>
      </tr>
      </table>
      </form>
    


    NB : j'ai ajouté (encore..) des blocs : "// Le temps des tests :" ... que tu pourras supprimer lorsque tes pages fonctionneront correctement.
    En attendant ça permet de faire du débogage et de comprendre ce qui peut ne pas marcher !


    NB2 : Attention à ne pas confondre les INCLUDE avec les HEADER LOCATION... tu sembles te méprendre sur leur fonctionnement !!!

    NB3 : Comme tu peux le voir.. j'utilise régulièrement l'instruction ISSET .. si tu ne sais pas à quoi elle sert .. regardes ici : https://www.php.net/manual/fr/function.isset.php

    NB4 : J'utilise également l'écriture "ternaire" ...
    par exemple :
    $msgError = isset($_SESSION['error_login']) ?$_SESSION['error_login']:'';
    

    Là aussi .. si tu ne sais pas ce que c'est ... regarde ici :
    https://www.php.net/manual/fr/language.operators.comparison.php

    => Ce qui veut dire :

    La syntaxe de l'opérateur ternaire est la suivante :
    echo $var = (expression vérifiée) ? affiche valeur 1 si test vérifié : affiche valeur 2 si test non vérifié;
    0
  19. Zedrof Messages postés 189 Statut Membre 1
     
    j'ai coupe colle mais toujours n'importe quelle user et pass peut acceder a l'application etant donne qu'il n'existe pas dans la table(table_utilisateur):

    Mais quand à moi j dirai qu'il peut se qu'ils y a une erreur sur la

    la syntaxe de l'operateur ternaire puisque
    $msgError = isset($_SESSION['error_login']) ?$_SESSION['error_login']:'';

    permet si j comprend bien de faire une comparaison entre duex valeur tandisque ici la seul variable declare est:
    error_login
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Peux tu refaire le cheminement complet ?
      Tu arrives sur ta première page. .. qu'est ce qui s'affiche ?
      0
      1. Zedrof Messages postés 189 Statut Membre 1 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        j'arrive sur login :
        Authentification
        user
        Mot de Passe
        et ici n'importe quel user et mot de passe peut permettre acceder à l'application tandisque c'est les users et pass qui sont dans la table (table_utilisateur ) qui doivent acceder a la page d'acceuil de l'application
        0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Dans session. Php commente les deux lignes de redirection (header (location..)
      Et reteste.
      ensuite dis moi ce qui est écrit dans la page
      0
      1. Zedrof Messages postés 189 Statut Membre 1 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        j'ai commente les deux lignes toujours la meme chose:

        n'importe quel user et mot de passe peut permettre acceder à l'application tandisque c'est les users et pass qui sont dans la table (table_utilisateur ) qui doivent acceder a la page d'acceuil de l'application
        0
  20. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    REPRENONS depuis le début :
    - Déjà... pour que nous soyons bien d'accord... tu laisses TOUS les ECHO / PRINT que j'ai ajouté dans ton code ( Le temps des tests..) JUSQU'A ce que ton site fonctionne... ok ??

    Donc :

    Première page ...

    <?php
    session_start();
    include "config/connexion.php";      
    include "lib/fonction_date.php";
    
    //LE TEMPS DES TESTS:
     echo "<pre>Variables de session :<br>";
     print_r($_SESSION);
     echo "</pre>";
    //----------------
    $User = isset($_SESSION['user'])?$_SESSION['user']:NULL;
    
    if(empty($User)) {//ce code permet de mettre le fichier login en acceuil au lieu de index
     //LE TEMPS DES TESTS: on desactive cette ligne :
     header('Location: login.php');
     echo "<pre> SESSION['user'] est vide ! </pre>";
    }
    echo "Bienvenue <b> ".$User."</b>"; 
    //le fichier index.php permet de lancer ts les fichiers de l'application
    ?>
    <html>
     <head>
      <meta http-equiv="content-type"
       content="text/html; charset=utf-8"/>
     <link href="web/css/style.css" media="screen"
      type="text/css" rel="stylesheet"/>
     <script src="web/js/jquery.js" type="text/javascript"></script>
     <script src="web/js/prototype.js" type="text/javascript"></script>
     <script src="web/js/javascript.js" type="text/javascript"></script>  
     <link rel="stylesheet" href="web/js/jquery-ui.css" />
        <script src="web/js/jquery-1.8.3.js"></script>
        <script src="web/js/jquery-ui.js"></script>
        <link rel="stylesheet" href="/resources/demos/style.css" /> 
      <title> Gestion du Parc Informatique de RMCR</title>
      
     </head>
     <body>
      <div id="menu">
      <a href="index.php?page=modules/historique/index.php">
      <strong>Historique</strong>
     </a>
      <a href="index.php?page=modules/mat/index.php">
      <strong>Materiel Affichage</strong>
     </a>
      <a href="index.php?page=modules/user/index.php">
      <strong>Utilisateur</strong>
     </a>
      <a href="index.php?page=modules/departement/index.php">
      <strong>Departement</strong>
     </a>  
      </div>
     
      <div id="entete">
      <img src="web/images/logo2.jpg"
         width="100px" 
        height="59px">
     </div>
      <div id="corps">
      <?php
     $page = isset($_GET['page'])?$_GET['page']:NULL;
     echo "<br> =>>> Page dans la variable GET = ".$page."<br>";
       if ($page){
       // on vérifie que la page existe avant d'essayer de l'inclure:
      if(file_exists($page)){
          include($page);
        }else{
        echo "Error ! La page ".$page." n'existe pas !";
      }
      }
       ?>
      </div>
    
      <div id="pied"><strong>© RMCR 2014 </strong></div>
     </body>
    </html>
    


    page : login.php
    <?php
    session_start();
    include "config/connexion.php";      
    include "lib/fonction_date.php";
    
    //Recuperation du message d'erreur s'il existe
    $msgError = isset($_SESSION['error_login']) ?$_SESSION['error_login']:NULL;
    
    if($msgError){
       echo "<div id='zone_message_erreur'>
          <pre>".$msgError."</pre> 
          </div>";
      }
     ?>
    
    <form action= "session.php " method= "POST">
    <table align="center" width="300px">
      <tr>
      <th colspan="2">Authentification</th>
      </tr><br/><br/>
      <tr>
      <td>user</td>
      <td><input name="user" type="text"/></td>
      </tr><br/><br/>
      
      
      <td>Mot de Passe</td>
      <td><input name="pass" type="password"/></td>
      </tr><br/><br/>
      <tr>
      <td colspan="2">
      <input type="submit" value="connexion"/></td>
      </tr>
      </table>
      </form>
    
    


    page : session.php :
    <?php
    session_start();
    include "config/connexion.php";
    
    //--------------------------------------
    // Le temps des tests :
    echo "<pre> Variables POST :<br>";
    print_r($_POST);
    echo "</pre>";
    //--------------------------------------
    
    //********************************//
    // Recupération des variables :
    //********************************//
    $user=isset($_POST['user']) && $_POST['user'] !=''?$_POST['user']:NULL;
    $pass=isset($_POST['pass']) && $_POST['pass'] !=''?$_POST['pass']:NULL;
    
    //********************************//
    // Préparation de la requete:
    //********************************//
    $sql = "SELECT * FROM table_utilisateur
          WHERE user = '".$user."'
          AND pass = '".$pass."'";
         
    //--------------------------------------
    // Le temps des tests :
    echo "<pre> La Requete est :<br>";
    echo $sql;
    echo "</pre>";
    //--------------------------------------
    
    //********************************//
    // Execution de la requete:
    //********************************//     
    $req= $connexion->prepare($sql);
    $resultat = $req->execute();
    
    if ($resultat){
     $_SESSION['user']=$user;
     unset($_SESSION['error_login']);
      //--------------------------------------
     // Le temps des tests :
     echo "<pre> Variables de session:<br>";
     print_r($_SESSION);
     echo "</pre>";
     //--------------------------------------
     //header('Location: index.php');
     exit;
    }else{
     // destruction des variables de session
     session_destroy();
     $_SESSION['error_login'] = "Login ou mot de passe incorrect!!!";
     //--------------------------------------
     // Le temps des tests :
     echo "<pre> Variables de session:<br>";
     print_r($_SESSION);
     echo "</pre>";
     //--------------------------------------
     //header('Location: login.php');
    }
    ?>
    
    


    ==>> Remplaces tes fichiers par ces codes...
    et colle nous ici le résultat de ce qui est affiché sur les pages !

    Avant de poser une question, merci de lire la charte du site.
    Cordialement, Jordane
    0
  21. Zedrof Messages postés 189 Statut Membre 1
     
    j'arrive sur login :
    Authentification
    user
    Mot de Passe
    et apres validation ça me donne

    Variables POST :
    Array
    (
    [user] => zedrof
    [pass] => mariko
    )
    La Requete est :
    SELECT * FROM table_utilisateur
    WHERE user = 'zedrof'
    AND pass = 'mariko'
    Variables de session:
    Array
    (
    [user] => zedrof
    )
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Ben donc ça m'a l'air bon....
      .. Et si tu essayes avec un USER qui n'existe pas et/ou un Mauvais Password ... ça donne quoi ??
      0
      1. Zedrof Messages postés 189 Statut Membre 1 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Variables POST :
        Array
        (
        [user] => azertyuiop
        [pass] => qsdfghjklertyuio
        )
        La Requete est :
        SELECT * FROM table_utilisateur
        WHERE user = 'azertyuiop'
        AND pass = 'qsdfghjklertyuio'
        Variables de session:
        Array
        (
        [user] => azertyuiop
        )
        0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Bizarre... si ta requête ne retourne aucun résultat.. tu ne devrais pas entrer dans le IF ....

      Essayes ça :
      (dans : session.php)
      <?php
      session_start();
      include "config/connexion.php";
      
      //--------------------------------------
      // Le temps des tests :
      echo "<pre> Variables POST :<br>";
      print_r($_POST);
      echo "</pre>";
      //--------------------------------------
      
      //********************************//
      // Recupération des variables :
      //********************************//
      $user=isset($_POST['user']) && $_POST['user'] !=''?$_POST['user']:NULL;
      $pass=isset($_POST['pass']) && $_POST['pass'] !=''?$_POST['pass']:NULL;
      
      //********************************//
      // Préparation de la requete:
      //********************************//
      $sql = "SELECT * FROM table_utilisateur
            WHERE user = '".$user."'
            AND pass = '".$pass."'";
           
      //--------------------------------------
      // Le temps des tests :
      echo "<pre> La Requete est :<br>";
      echo $sql;
      echo "</pre>";
      //--------------------------------------
      
      //********************************//
      // Execution de la requete:
      //********************************//     
      $req= $connexion->prepare($sql);
      $resultat = $req->execute();
      $NbRow = $resultat->rowCount();
      
       //--------------------------------------
       // Le temps des tests :
      echo "<pre> NbRows =".$NbRow ."</pre>";
      echo "<pre>Resultat :<br>";
      print_r($resultat);
      echo "</pre>"; 
        //--------------------------------------
      
      if ($NbRow >=1){
       $_SESSION['user']=$user;
       unset($_SESSION['error_login']);
        //--------------------------------------
       // Le temps des tests :
       echo "<pre> Variables de session:<br>";
       print_r($_SESSION);
       echo "</pre>";
       //--------------------------------------
       //header('Location: index.php');
       exit;
      }else{
       // destruction des variables de session
       session_destroy();
       $_SESSION['error_login'] = "Login ou mot de passe incorrect!!!";
       //--------------------------------------
       // Le temps des tests :
       echo "<pre> Variables de session:<br>";
       print_r($_SESSION);
       echo "</pre>";
       //--------------------------------------
       //header('Location: login.php');
      }
      ?>
      
      
      
      0
      1. Utilisateur anonyme > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Bonjour

        Bizarre... si ta requête ne retourne aucun résultat.. tu ne devrais pas entrer dans le IF
        Si car $resultat = $req->execute(); rend TRUE à partir du moment où il n'y a pas d'erreur, peu importe le nombre de réponses.
        Dans ce cas, il valait mieux faire une requête SELECT COUNT(*)... et tester la valeur rendue. Tu proposes une solution avec rowCount qui marche certainement aussi, mais attention, rowCount sur un SELECT ne marche pas avec toutes les bases de données.
        0
  • 1
  • 2