IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Utilisation sessions pour accès pages ?


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien en télécommunication
    Inscrit en
    Mai 2013
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien en télécommunication
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 199
    Points : 73
    Points
    73
    Par défaut Utilisation sessions pour accès pages ?
    Bonjour,
    pour le moment, quand les utilisateurs se connectent ils ont accès à toutes les pages web (uniquement s'ils sont connectés). Les utilisateurs sont enregistrés dans une table.

    J'ai des "pages" que seul les administrateurs peuvent avoir accès mais je ne vois pas très bien comment faire car j'ai déjà des sessions sur mes pages ?

    Pour l'instant tout est ouvert aux utilisateurs connecté.

    Page connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    $req = $db->prepare('SELECT * FROM users WHERE email = ?');
     
    	$req->execute(array($email));
     
    	while($user = $req->fetch()){
     
    		if ($password == $user['password']){
    			$error = 0;
    			$_SESSION['connect'] = 1;
    			$_SESSION['pseudo'] = $user['pseudo'];
    			header('location: connection.php?success=1');
     
    		}	
     
    			if($error == 1){
    			header('location: connection.php?error=1');
    		}
     
    		}
     
     
    		}
    Page quelconque que les utilisateurs ont accès une fois connecté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    session_start(); 
    require('src/connection.php');
    if(empty($_SESSION['connect'])){
       header('location: connection.php');
       exit;
    }
    else{
     
    ?>
    <!DOCTYPE html>
    <html>
    .......
    </html>
    <?php }  ?>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ajoute un 'statut' :
    • 'user' : 0 // par defaut
    • 'admin' : 1 (ou 1, 2, 3, 10 si on peut avoir plusieurs types d'administration : gestion de articles uniquement, gestion de...., super-admin...)



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if( $_SESSION['statut'] >= 1 ) // admin
    {
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if( $_SESSION['statut'] >= 10 ) // super-admin
    {
    ...

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien en télécommunication
    Inscrit en
    Mai 2013
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien en télécommunication
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 199
    Points : 73
    Points
    73
    Par défaut
    Bonjour,
    j'ai dû stopper mon code pendant un petit temps,
    voilà j'ai donc essayé comme vous m'avez dit mais ..

    Si je fait comme ceci dans ma page connection.php, plus aucune page ne s'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    require('src/connection.php');
     
    if (!empty($_POST['email']) && !empty($_POST['password'])){
     
     
     
    	// VARIABLES	
    	$email 				= $_POST['email'];	
    	$password 			= $_POST['password'];
    	$error				= 1;
     
    $req = $db->prepare('SELECT * FROM users WHERE email = ?');
     
    	$req->execute(array($email));
     
    	while($user = $req->fetch()){
     
    		if ($password == $user['password']){
    			$error = 0;
    			$_SESSION['connect'] = 0;
    			$_SESSION['pseudo'] = $user['pseudo'];
     
    			header('location: connection.php?success=1');
     
    		}	
     
    			if($error == 1){
    			header('location: connection.php?error=1');
    		}
     
    		}
    Si je remets 1 au lieu de 0 dans la page connection.php mais que je fais ceci dans la page que je ne veux qui s'affiche pour un administrateur, la page s'affiche quand même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    session_start(); 
    require('src/connection.php');
    if(empty($_SESSION['connect'] >= 0)){
       header('location: connection.php');
       exit;
    Le but est que l'accès à 2 pages ne peuvent être disponible que pour l'administrateur du site (pour l'instant tout le monde à accès à toutes les pages en se connectant avec un login et mot de passe qui sont dans ma table de la DB

    J'ai déjà bien avancé bien que je ne suis pas développeur mais il y a encore quelques trucs et astuces que je suis ...loin
    Mon portail web très bien apprécié par mes camarades et tout en php (rien qu'en prenant des cours) mais là je bloque.

    Je loupe certainement un truc avec votre réponse

    Merci à vous.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <?php
    require('src/connection.php');
    if (!empty($_POST['email']) && !empty($_POST['password']))
    {
    	// VARIABLES	
    	$email 		= $_POST['email'];	
    	$password 	= $_POST['password'];
    	$error		= 1;
     
    	$req = $db->prepare('SELECT password FROM users WHERE email = ?');
    	$req->execute(array($email));
     
    	$user = $req->fetch(); // pas besoin de while, car on ne recoit qu une seule ligne
     
    	if ($password == $user['password'])
    	{
    		$error = 0;
    		$_SESSION['connect'] = 1; // ou le statut (si il est defini) : 1=admin normal, 10=super-admin,.....
    		$_SESSION['pseudo'] = $user['pseudo'];
     
    		header('location: connection.php?success=1');
     
    	} else {
    		unset($_SESSION['connect']); // on vide
    		unset($_SESSION['pseudo']); // on vide
     
    		header('location: connection.php?error=1');
    	}
    }
    PROTECTION DES PAGES (à mettre au tout début) :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php session_start(); 
    require('src/connection.php');
    // PAS connecté ?
    if( empty($_SESSION['connect']) || $_SESSION['connect'] <= 0 )
    {
       header('location: connection.php');
       exit;
    }
    // Sinon : OK, on continue...

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien en télécommunication
    Inscrit en
    Mai 2013
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien en télécommunication
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 199
    Points : 73
    Points
    73
    Par défaut
    J'ai mon user "titi@gmail.com" qui est mon user normal (titi est l'utilisateur mais certaines pages notamment la page "consultation" qui ne doit pas s'afficher avec cet utilisateur.
    tata@gmail.com (l'admin) lui se connecte mais en affichant la page "consultation".

    J'ai changé mon code avec le votre mais ma page "consultation" toujours, tout users confondu.

    J'ai essayé également ceci dans ma page "consultation" mais ne fonctionne pas non plus car là par contre ma page consultation ne s'affiche avec aucun user (ni titi, ni tata)
    (Tout les users sont dans une table dans la DB Mysql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    require('src/connection.php');
    if(empty($_SESSION['connect'] == 'tata@mail.com' )){
       header('location: connection.php');
       exit;
    }
    else{
    Maintenant, au niveau des statuts, que voulez vous dire par la ? Ce sont les droits dans ma table Mysql?
    J'y suis presque, mon portail est presque fini et fonctionnel mais la finalisation est plus "compliquée" que prévu

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Le "statut" : c'est justement ça qui va différencier les droits du user titi et du user tata.
    Appelle-moi "droits" si c'est plus clair pour toi.

    1- normal
    10- admin (normal + droit d'accès a la page consultation)

  7. #7
    Membre régulier
    Homme Profil pro
    Technicien en télécommunication
    Inscrit en
    Mai 2013
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien en télécommunication
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 199
    Points : 73
    Points
    73
    Par défaut
    Vous allez me prendre pour un boulet mais bon...
    😊
    Je vois ce que vous voulez dire mais comme j'ai un formulaire d'ajout d'utilisateur "qui ne devrait être accessible que par moi" (je n'ai pas mis la page ajout sur mon site mais dés qu'un utilisateur est connecté au site s'il connaît la page www......../ajout.php il pourrait sans aucun problème ajouter n'importe quoi). Cette page ci comme la page consultation ne devrait être accessible que pour l'admin. Donc je ne vois pas comment je pourrais attribuer un statut à un user qui se trouve dans ma table user de ma DB ?

Discussions similaires

  1. Réponses: 8
    Dernier message: 01/06/2017, 11h40
  2. utiliser Session pour récupérer date
    Par makin_toch dans le forum ASP.NET
    Réponses: 4
    Dernier message: 05/05/2011, 17h24
  3. probleme declanchement session pour plusieur page !
    Par montis dans le forum Langage
    Réponses: 4
    Dernier message: 01/04/2011, 02h26
  4. [MySQL] ( GET ) Lien utilisant ID pour afficher page modification
    Par spidercrash dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/04/2010, 20h00
  5. Réponses: 1
    Dernier message: 30/03/2009, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo