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 :

Check ID de session [PHP 5.6]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 11
    Par défaut Check ID de session
    Bonjour,

    Je me suis fait un petit portail perso d'identification sur MySql, tout fonctionne à merveille, maintenant je cherche à afficher une information différente lorsque que mon User 1 (admin) est loggué et ne pas afficher lorsque que mon user 2 (utilisateur classique) est loggué
    Pour cela j'ai fait :
    Dans le haut de ma page PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $checkAdmin=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']!="1");
    Et dans mon Body :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    if ( isset($checkAdmin) ) { ?> 
    OK je suis admin 
    <?php } ?>
    En revanche ca ne fonctionne pas j'ai toujours le message "OK je suis Admin" qui s'affiche dans les deux cas...

    Merci de votre aide

    Franck

  2. #2
    Membre éclairé Avatar de Cat81
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 56
    Par défaut
    Bonjour,

    Selon moi, c'est au niveau de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']!="1");
    T'as essayé de voir ce que cela te renvoi via un echo du résultat?

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $checkAdmin=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']!="1");
    C'est du grand art
    1 - mysql_query est obsolète
    2 - mysql_query ne renvoi pas les données, il faut faire un fetch ensuite pour lire les résultats
    3 - c'est quoi cette condition triple userId= xxx !="1" ? Et il n'y a pas besoin de " autour du 1
    4 - si tu as déjà une session PHP qui contient l'id de l'utilisateur, tu n'as pas besoin de refaire une requête pour voir s'il vaut 1 ou non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (isset($_SESSION['user']) && $_SESSION['user'] != 1) {
       // des choses
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 11
    Par défaut
    Je débute

    Voici mon code car ca ne fonctionne pas
    En début de page (pour sécuriser ma page)
    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
    <?php
    	ob_start();
    	session_start();
    	require_once '../dbconnect.php';
     
    	// if session is not set this will redirect to login page
    	if( !isset($_SESSION['user']) ) {
    		header("Location: ../index.php");
    		exit;
     
    	}
    	// select loggedin users detail
    	$res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
    	$userRow=mysql_fetch_array($res);
     
    ?>
    La partie affichage de ma fonction admin :

    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
     
     
    								<!-- FONCTION POUR L ADMIN -->
    								<?php
    								if (isset($_SESSION['user']) && $_SESSION['user'] != 1) {
    								?> 
     
    								<div class="form-group">
                                        <label class="col-md-12">Nouvel Utilisateur</label>
                                        <div class="col-md-12">
                                        <a href="../register.php">test</a>
    									</div>
                                    </div>
     
    								<?php } 
    								else {}
    								?>
     
    								<!-- FIN DE FONCTION ADMIN -->
    J'ai essayé avec cà et idem ca ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_SESSION['user']) && $_SESSION['userId'] != 1)
    Merci beaucoup de votre aide

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

    Quand on te dit "mysql_query est obsolète", ça veut dire qu'il ne faut plus utiliser l'extension mysql.

    Aujourd'hui, on utilise PDO.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    A quel endroit remplis-tu la session ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 11
    Par défaut
    J'ai corrigé comme ceci :
    En haut de page
    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
    <?php
     
    	require_once("../betalogin/session.php");
     
    	require_once("../betalogin/class.user.php");
    	$auth_user = new USER();
     
     
    	$userId = $_SESSION['user_session'];
     
    	$stmt = $auth_user->runQuery("SELECT * FROM users WHERE userId=:userId");
    	$stmt->execute(array(":userId"=>$userId));
     
    	$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
     
    ?>
    Mes sessions sont identifiées sur une page index dans un autre répertoire :
    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_once 'class.user.php';
    	$session = new USER();
     
    	// if user session is not active(not loggedin) this page will help 'home.php and profile.php' to redirect to login page
    	// put this file within secured pages that users (users can't access without login)
     
    	if(!$session->is_loggedin())
    	{
    		// session no set redirects to login page
    		$session->redirect('../betalogin/index.php');
    	}
    Et mon class user :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    <?php
     
    require_once('dbconfig.php');
     
    class USER
    {	
     
    	private $conn;
     
    	public function __construct()
    	{
    		$database = new Database();
    		$db = $database->dbConnection();
    		$this->conn = $db;
        }
     
    	public function runQuery($sql)
    	{
    		$stmt = $this->conn->prepare($sql);
    		return $stmt;
    	}
     
    	public function register($uname,$umail,$upass)
    	{
    		try
    		{
    			$new_password = password_hash($upass, PASSWORD_DEFAULT);
     
    			$stmt = $this->conn->prepare("INSERT INTO users(userName,userEmail,userPass) 
    		                                               VALUES(:uname, :umail, :upass)");
     
    			$stmt->bindparam(":uname", $uname);
    			$stmt->bindparam(":umail", $umail);
    			$stmt->bindparam(":upass", $new_password);										  
     
    			$stmt->execute();	
     
    			return $stmt;	
    		}
    		catch(PDOException $e)
    		{
    			echo $e->getMessage();
    		}				
    	}
     
     
    	public function doLogin($uname,$umail,$upass)
    	{
    		try
    		{
    			$stmt = $this->conn->prepare("SELECT userId, userName, userEmail, userPass FROM users WHERE userName=:uname OR userEmail=:umail ");
    			$stmt->execute(array(':uname'=>$uname, ':umail'=>$umail));
    			$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
    			if($stmt->rowCount() == 1)
    			{
    				if(password_verify($upass, $userRow['userPass']))
    				{
    					$_SESSION['user_session'] = $userRow['userId'];
    					return true;
    				}
    				else
    				{
    					return false;
    				}
    			}
    		}
    		catch(PDOException $e)
    		{
    			echo $e->getMessage();
    		}
    	}
     
    	public function is_loggedin()
    	{
    		if(isset($_SESSION['user_session']))
    		{
    			return true;
    		}
    	}
     
    	public function redirect($url)
    	{
    		header("Location: $url");
    	}
     
    	public function doLogout()
    	{
    		session_destroy();
    		unset($_SESSION['user_session']);
    		return true;
    	}
    }
    ?>

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    C'est $_SESSION['user_session'] au lieu de $_SESSION['userId']
    Mais changer le nom des données en cours de route c'est evidemment le bon moyen de se tromper.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 11
    Par défaut
    Il n'y que user session que j'ai changé toutes les autres sont à l'identique, ca ne marche toujours pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    								<?php
    									if (isset($_SESSION['user_session']) && $_SESSION['user_session'] != 6) {
    										echo 'ok';
    									}
    									else {
    										echo 'no admin';
    									}
    								?>
    Dans j'utilise le user 5 ilo me dit "OK" alors que normalement cela devrait être 'No Admin'.....

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu as fais le debugage minimum a savoir contrôler la valeur de la variable ?

    Tu as bien le session_start() sur ce script ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 11
    Par défaut
    Comment puis je faire le débuggage ?

    Oui j'ai mon session start dans mon session.php que j'appel comme ceci en début de fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php
    	require_once("../betalogin/session.php");
    Pour info les valeurs ce chargent bien puisque je fais appel par exemple à l'email dans BDD et cela fonctionne quand je change de compte :
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="email" placeholder="<?php echo $userRow['userEmail']; ?>

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Juste avant le test if te dira tout.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 11
    Par défaut
    Je l'ai mis comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    								var_dump($_SESSION);
    									if (isset($_SESSION['user_session']) && $_SESSION['user_session'] != 6) {
    										echo 'ok';
    									}
    									else {
    										echo 'no admin';
    									}
    								?>
    Il m'écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(1) { ["user_session"]=> string(1) "5" } ok
    Donc en occurrence il voit bien que mon User actuel est en ID "5" et non pas 6

  14. #14
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    									if (isset($_SESSION['user_session']) && $_SESSION['user_session'] != 6) {
    On est d'accord que 5 est différent de 6.
    5 != 6
    Donc la condition est vraie.
    Donc 'ok'.


    Tu devrais faire une pause......

  15. #15
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 11
    Par défaut
    Put*** je crois oui

    Merci infiniment !
    J'ai pris la condition à l'envers je crois, honte...
    Encore merci !

    Franck

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/08/2007, 14h42
  2. Réponses: 6
    Dernier message: 30/09/2006, 16h14
  3. checking de connexion
    Par JEG dans le forum Développement
    Réponses: 4
    Dernier message: 09/10/2002, 14h36
  4. [propriétés]Option Checked
    Par psl dans le forum Composants VCL
    Réponses: 6
    Dernier message: 22/08/2002, 09h07
  5. Check Url pour savoir si erreur 404 ou si le site existe
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/08/2002, 14h49

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