Proteger les pages avec une session php

Résolu/Fermé
Imelda24 - 29 janv. 2017 à 19:11
 Imelda24 - 29 janv. 2017 à 20:22
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


A voir également:

4 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
29 janv. 2017 à 19:18
Quel est le code de ta page de login ?
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
29 janv. 2017 à 19:32
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...




0
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
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
29 janv. 2017 à 19:51
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());
  }
}

0
ca marche merci.
Jordane
0