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

PHP & Base de données Discussion :

connexion session utilisateur [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Par défaut connexion session utilisateur
    salut
    mon code permet de gérer la connexion d'un utilisateur et de vérifier que le login et mot de passe sont correcte. Le problème c'est que après avoir cliquer sur 'se connecter' rien ne se passe! je comprends pas ou est le problème.
    voila le code: connexion.php
    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
    <?php
     header('Content-Type: text/html; charset=UTF-8');
    try
    {
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        $pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES utf8';
        $bdd = new PDO('mysql:host=localhost;dbname=projet', 'root', '', $pdo_options);
    }
    catch (PDOException $e)
    {
        die('Erreur : ' . $e->getMessage());
    }
    ?>
    <?php
    session_start();
     
    ?>
     
    <?php
    if (isset($_POST['se connecter']))
    { 
    	$login = addslashes($_POST['login']); // mise en variable du nom d'utilisateur
    	$pass = addslashes($_POST['pass']);
    	if (empty($login) && empty($pass))
    	 {
           echo 'erreur champs non remplis';
    	 } 
        else
    	 {
       $sql = $db->prepare('SELECT id FROM site_user WHERE login = :login AND pass = :pass ');
       $sql->execute(array(':login' => $login,':pass' => $pass));
       $userdata = $sql->fetch(PDO::FETCH_ASSOC);
            if (!empty($userdata))
            {
    			$_SESSION['privilege'] = $userdata['privilege']; // le privilège de l'utilisateur (permet de définir des niveaux d'utilisateur)
    		    $_SESSION['nom'] = $userdata['nom']; // Son nom
    		    $_SESSION['prenom'] = $userdata['prenom']; // Son Prénom
    		    $_SESSION['login'] = $userdata['login']; // Son Login
    		    $_SESSION['pass'] = $userdata['pass'];
     
    			header("Location:accueil.php");
     
    	    }
    		else
    		 {
    			 $userdata = FALSE;
             }
    	 }
    }
     
     
     
    ?>
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>
     
    <body>
    <form action="connexion.php" method="post">
     <table width="300"  border="0" align="center" cellpadding="10" cellspacing="0" bgcolor="#eeeeee" class="tableaux">
        <tr>
          <td width="50%""><div align="right">login</div></td>
          <td width="50%"><input name="login" type="text" id="login"></td>
        </tr>
        <tr>
          <td width="50%""><div align="right">mot de passe</div></td>
          <td width="50%"><input name="pass" type="password" id="pass"></td>
        </tr>
        <tr>
          <td height="34" colspan="2"><div align="center">
              <input type="submit" name="se connecter" value="se connecter">
          </div></td>
        </tr>
      </table>
      </form>
    </body>
    </html>

  2. #2
    Membre éclairé Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Par défaut
    j'ai vérifié et essayé plein de fois!! j'arrive pas à savoir pourquoi il ne pénétre pas dans la condition if $_POST['se connecter']

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Ne mets pas d'espace dans le nom des input. Utilise un _ si tu le souhaite pour séparer des mots ex : name = "se_connecter"

  4. #4
    Membre éclairé Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Par défaut
    Merci j'ai changer 'se connecter' par 'connexion' et ça marche,
    mais j'ai des erreurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    otice: Undefined index: privilege in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\projet\connexion.php on line 36
     
    Notice: Undefined index: nom in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\projet\connexion.php on line 37
     
    Notice: Undefined index: prenom in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\projet\connexion.php on line 38
     
    Notice: Undefined index: login in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\projet\connexion.php on line 39
     
    Notice: Undefined index: pass in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\projet\connexion.php on line 40
     
    Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0
    code connexion.php:
    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
    <?php
     header('Content-Type: text/html; charset=UTF-8');
    try
    {
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        $pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES utf8';
        $bdd = new PDO('mysql:host=localhost;dbname=projet', 'root', '', $pdo_options);
    }
    catch (PDOException $e)
    {
        die('Erreur : ' . $e->getMessage());
    }
    ?>
    <?php
    session_start();
     
    ?>
     
    <?php
     
    if (isset($_POST['connexion']))
    { 
    	$login = addslashes($_POST['login']); // mise en variable du nom d'utilisateur
    	$pass = addslashes($_POST['pass']);
    	if (empty($login) && empty($pass))
    	 {
           echo 'erreur champs non remplis';
    	 } 
        else
    	 {
       $sql = $bdd->prepare('SELECT id FROM site_user WHERE login = :login AND pass = :pass ');
       $sql->execute(array(':login' => $login,':pass' => $pass));
       $userdata = $sql->fetch(PDO::FETCH_ASSOC);
            if (!empty($userdata))
            {
    			$_SESSION['privilege'] = $userdata['privilege']; // le privilège de l'utilisateur (permet de définir des niveaux d'utilisateur)
    		    $_SESSION['nom'] = $userdata['nom']; // Son nom
    		    $_SESSION['prenom'] = $userdata['prenom']; // Son Prénom
    		    $_SESSION['login'] = $userdata['login']; // Son Login
    		    $_SESSION['pass'] = $userdata['pass'];
     
    	    }
    		else
    		 {
    			 $userdata = FALSE;
             }
    	 }
    }
     
     
     
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>
     
    <body>
    <form action="connexion.php" method="post">
     <table width="300"  border="0" align="center" cellpadding="10" cellspacing="0" bgcolor="#eeeeee" class="tableaux">
        <tr>
          <td width="50%""><div align="right">login</div></td>
          <td width="50%"><input name="login" type="text" id="login"></td>
        </tr>
        <tr>
          <td width="50%""><div align="right">mot de passe</div></td>
          <td width="50%"><input name="pass" type="password" id="pass"></td>
        </tr>
        <tr>
          <td height="34" colspan="2"><div align="center">
              <input type="submit" name="connexion" value="connexion">
          </div></td>
        </tr>
      </table>
     
      </form>
    </body>
    </html>

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Si tu veux pouvoir récupérer les valeurs de la colonne "privilege" dans ta requête il faudrait l'indiquer sinon $userdata['privilege'] ne correspond à rien d'où le message d'erreur. Pour l'instant tu ne sélectionne que l'id. Idem pour les autres champs.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut
    En ce qui concerne le warning de session, je me trompe peut etre, mais session_start() ne déclenche t'il pas une erreur s'il trouve des informations dans le header, et c'est pour cela qu'il doit être exécuter au début?

  7. #7
    Membre éclairé Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    Si tu veux pouvoir récupérer les valeurs de la colonne "privilege" dans ta requête il faudrait l'indiquer sinon $userdata['privilege'] ne correspond à rien d'où le message d'erreur. Pour l'instant tu ne sélectionne que l'id. Idem pour les autres champs.
    merci, je ne me suis pas rendu compte.

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

Discussions similaires

  1. Session utilisateur Connexion
    Par benny-blanco dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/04/2012, 09h12
  2. Réponses: 14
    Dernier message: 17/08/2009, 18h40
  3. problème de connexion d'utilisateur avec session
    Par jeha dans le forum Langage
    Réponses: 3
    Dernier message: 16/01/2008, 15h49
  4. Nom session utilisateur windows
    Par snipes dans le forum Windows
    Réponses: 1
    Dernier message: 20/04/2006, 16h17
  5. Liste session utilisateur
    Par trax44 dans le forum Langage
    Réponses: 1
    Dernier message: 18/04/2006, 12h42

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