Proteger les pages avec une session php [Résolu/Fermé]

Signaler
-
 Imelda24 -
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

Messages postés
14674
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
8 avril 2020
216
Quel est le code de ta page de login ?
Messages postés
28132
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 avril 2020
2 256
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...




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
Messages postés
28132
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 avril 2020
2 256
Qu'as tu fait du code que je t'avais DEJA donné pour la connexion ???
https://www.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());
  }
}

ca marche merci.
Jordane