Proteger les pages avec une session php

Résolu
Bonsoir,
mon probleme j'arrive a accéder a mes pages quand je tape les liens . donc j'ai mis ceci comme code pour la protection des pages

<?php 
session_start();

if(!isset($_SESSION['admin'])) {  

    header("/admin/login/index.php");
  
     }
   ?>


je le demande de retourner dans la page login si c pas le cas mais malheuseument quand j'entre l'username et le mot de passe j'arrive pas aussi a acceder a la page . un peu d'aide svp.

cordialement,
Imelda

4 réponses

  1. Modérateur
    Bonjour,

    En complément de la réponse de Nhenry ( ton code de ta page de login...), je peux ajouter :

    La redirection php s'utilise ainsi :
     header('location : url_de_ta_page');
     exit(); //toujours faire un exit après une redirection
    


    Tu peux ajouter l'affichage des erreurs PHP pour voir si ton code n'en comporte pas :
     error_reporting(E_ALL);
     ini_set('display-errors','on');
    


    Tu pourrais aussi, le temps des tests, mettre en commentaire la redirection et, au début de ton code (avant le IF), afficher le contenu des variables de session :
    print_r($_SESSION);
    

    Histoire de voir ce que contient cette variable et ainsi voir si la variable 'admin' y existe...

    1. voila @ NHenry
      <?php
        require("connect.php");
         
                        
                        //require("connect.php");
                        
                            if(isset($_POST['username'])AND isset($_POST['Motd_passe'])){
                                
                                $username=htmlspecialchars($_POST['username']);
                                $Motd_passe=sha1(htmlspecialchars($_POST['Motd_passe']));
                                  
                                try{             
                                $requete="SELECT * FROM administrateur";
                                $query=sqlsrv_query($conn, $requete);
                                
                                while($donnees=sqlsrv_fetch_array($query)){ 
                                  
                                  if($donnees['username']===$username && $donnees['Motd_passe']===$Motd_passe){  
                                    
                                      session_start();
                                      $_SESSION['id']=$donnees['id'];
                                      $_SESSION['admin']=$username;
                                     
                                     header("Location: /admin/ordinateur/index.php");  
                                                          
                              }
                              
                            }
                            sqlsrv_free_stmt($query);
                            
                          }catch(Exception $e){
                            die('Erreur '.$e->getMessage());
                          }
                           
                            }
                        sqlsrv_close($query);
      
                  
      ?>


      jvais essayer Jordane
      1. Modérateur
        Qu'as tu fait du code que je t'avais DEJA donné pour la connexion ???
        https://forums.commentcamarche.net/forum/affich-34303514-probleme-de-connection#3

        Tu sais.. celui où je t'indiquais que la vérification se faisait via la requête SQL et non via des "if" en PHP ?????

        Je me repète .. mais .. on ne fait pas :
         if($donnees['username']===$username && $donnees['Motd_passe']===$Motd_passe){  
        

        Par contre on fait :
        SELECT * 
        FROM administrateur 
        WHERE username = '$username'
           AND Motd_passe = '$Motd_passe';
        


        Bref.. le code d'authentification peut se réécrire plus proprement comme ceci :
        <?php
        //demarrage des sessions
        session_start();
        
        // Affichage des erreurs PHP
        error_reporting(E_ALL);
        ini_set('display-errors','on');
        
        //connexion à la BDD
        require_once "connect.php";
          
          
        //récupération PROPRE des variables
        $username= !empty($_POST['username']) ? htmlspecialchars($_POST['username']) : NULL;
        $Motd_passe = !empty($_POST['Motd_passe']) ? sha1(htmlspecialchars($_POST['Motd_passe'])) : NULL ;
        
        //traitement du submit
        if($username && $Motd_passe){
          $requete="SELECT * 
                    FROM administrateur 
                    WHERE username = '$username'
                      AND Motd_passe = '$Motd_passe';";
          try{
            $query=sqlsrv_query($conn,$requete);
            $donnees=sqlsrv_fetch_array($query);
            sqlsrv_close($query);
            if(!empty($donnees)){
              $_SESSION['id']=$donnees['id'];
              $_SESSION['admin']=$username;
         
              header("Location: /admin/ordinateur/index.php"); 
              exit(); //toujours mettre un Exit apres une redirection ...   
            }   
          }catch(Exception $e){
            die('Erreur '.$e->getMessage());
          }
        }