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 :

Page connexion - Espace membre [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut Page connexion - Espace membre
    Bonjour,

    Je me suis lancé dans la création d'un espace membre d'un petit site, pour un projet universitaire.

    Suite aux conseils d'un membre du forum, j'ai recommencé mes pages car j'utilisais encore mysql_query ; obsolète à l'heure actuelle...

    Je vous présente le contexte :

    Ma page register fonctionne parfaitement, je crée un user, et il figure bien dans la base de donnée.

    Le problème se situe sur la page de connexion ; lorsque j'essaie de me loggué rien ne se passe, il me recharger la même page connexion... je ne sais pas pourquoi.

    Pourtant j'ai bien hashé les deux mots de passes, pour moi le problème vient de la connexion à la base ou de me requête, mais j'ai l'impression que c'est sont correctes.

    Voici les codes :

    register.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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    <?php
    session_start();
     
    include('include/config.php');
    ?>
     
    <!DOCTYPE html>
     
     
    <html>
    <head>
    	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    	<title>Bienvenue | FIFA Tournament 2015</title>
    	<link href="css/style.css" rel="stylesheet" type="text/css" media="screen">
    </head>
     
    <body>
    <div id="main">
    	<div id="top"> <img src="images/fifa.jpg" class="image_principale" alt="fifa15" /> </div>
     
    <nav> 	
    	<?php
    		if (isset ($_SESSION['log'])){
    			include 'menu_co.php';
    		} else {
    			include 'menu_deco.php';
    		}
    	?>
    </nav>
     
    <div id="site_content" style="height:300px">
    	<h1 style='color:#09D4FF'>S'inscrire</h1>	
    <div class="content" style='height:300px;text-align:left'>
     
    	<?php
    		if (isset($_POST['submit']))
    		{
    			$login = htmlentities(trim($_POST['login']));
    			$mdp = htmlentities(trim($_POST['mdp']));
    			$repeatmdp = htmlentities(trim($_POST['repeatmdp']));
    			$email = htmlentities(trim($_POST['email']));
     
    			if ($login && $mdp && $repeatmdp && $email)
    			{
    				$req = $bdd->prepare('SELECT * FROM users WHERE login = :login');
    				$req->execute(array('login'=> $login));
    				$resultat=$req->fetch();
     
    				//Vérification si pseudo déjà crée
    				if(!$resultat)
    				{
    					$req = $bdd->prepare('SELECT * FROM users WHERE email = :email');
    					$req->execute(array('email'=> $email));
    					$resul=$req->fetch();
     
    					//Vérification si mail déjà utilisé
    					if(!$resul)
    					{
    						if(strlen($login) >= 4)
    						{
    							if (strlen($mdp) >= 4)
    							{
    								if ($mdp == $repeatmdp)
    								{
    									if (filter_var($email, FILTER_VALIDATE_EMAIL))
    									{
    										// Hachage du mot de passe
    										$mdp = sha1($_POST['mdp']);
    										//$login = $_POST['login'];
     
    										$req = $bdd->prepare('INSERT INTO users(login, mdp, email) VALUES(:login, :mdp, :email)');
    										$req->execute(array(
    											'login' => $login,
    											'mdp' => $mdp,
    											'email' => $email));
    										header('Location:connexion.php');	
     
    									}else echo "Veuillez saisir une adresse mail correcte";
    								}else echo "Les mots de passe doivent correspondre";
    							}else echo "Mot de passe trop court (au moins 4 caractères)";
    						}else echo "Pseudo trop court (au moins 4 caractères)";
    					}else echo "L'adresse mail renseigné est déjà utilisée";
    				}else echo "Pseudo déjà utilisé";
    			}else echo "Veuillez saisir tous les champs !";
    		}
     
    	?>
     
    <form method="post" action="register.php">
        <label style="color:white"> Pseudo :</label><input style="background-color:#8CC6D7"; type = "text" name = "login" /> <br/><br/>
        <label style="color:white"> Mot de passe :</label><input style="background-color:#8CC6D7"; type="password" name="mdp"/> <br/><br/>
    	<label style="color:white"> Confirmation du mot de passe :</label><input style="background-color:#8CC6D7"; type="password" name="repeatmdp"/> <br/> <br/> <br/>  
        <label style="color:white"> Adresse e-mail :</label><input style="background-color:#8CC6D7"; type="email" name="email"/> <br/><br/> 
    	<input style="background-color:#8CC6D7; margin-top:20px; font-weight:bold" type="submit" value="S'inscrire" name="submit"/>
    </form>
    </div>
     
    	<footer>
    		Copyright &copy; Nico'Création Web | Mentions légales | Tous droits réservés. 
    	</footer>
     
    </div>
    </body>
    </html>

    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
    81
    82
    83
    84
    <?php
    session_start();
     
    include('include/config.php');
    ?>
     
    <!DOCTYPE html>
     
    <html>
    <head>
    	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    	<title>Bienvenue | FIFA Tournament 2015</title>
    	<link href="css/style.css" rel="stylesheet" type="text/css" media="screen">
    </head>
     
    <body>
    <div id="main">
    	<div id="top"> <img src="images/fifa.jpg" class="image_principale" alt="fifa15" /> </div>
     
    <nav> 	
    	<?php
    		if (isset ($_SESSION['log'])){
    			include 'menu_co.php';
    		} else {
    			include 'menu_deco.php';
    		}
    	?>
    </nav>
     
    <div id="site_content" style="height:150px">
    	<h1 style='color:#09D4FF'>Connexion</h1>	
    <div class="content" style='height:150px;text-align:left'>
     
    	<?php
    		if (isset($_POST['submit']))
    		{
    			$login = htmlentities(trim($_POST['login']));
    			$mdp = htmlentities(trim($_POST['mdp']));
     
     
    			if ($login && $mdp)
    			{
     
    				// Hachage du mot de passe
    				$mdp = sha1($_POST['mdp']);
     
    				// Vérification des identifiants
    				$req = $bdd->prepare('SELECT id FROM users WHERE login = :login AND mdp = :mdp');
    				$req->execute(array(
    					'login' => $login,
    					'mdp' => $mdp));
     
    				$resultat = $req->fetch();
     
    				if (!$resultat)
    				{
    					echo 'Mauvais identifiant ou mot de passe !';
    				}
    				else
    				{
    					session_start();
    					$_SESSION['id'] = $resultat['id'];
    					$_SESSION['login'] = $login;
    					header('Location:index.php');		 
    				}	
    			}
    		}
    	?>
     
    <form method="post" action="connexion.php">
        <label style="color:white"> Pseudo :</label><input style="background-color:#8CC6D7"; type = "text" name = "login" /> <br/><br/>
        <label style="color:white"> Mot de passe :</label><input style="background-color:#8CC6D7"; type="password" name="mdp"/> <br/><br/>
    	<input style="background-color:#8CC6D7; margin-top:20px; font-weight:bold" type="submit" value="Connexion"/>
    </form>
    </div>
     
    	<footer>
    		Copyright &copy; Nico'Création Web | Mentions légales | Tous droits réservés. 
    	</footer>
     
    	</div>
    </div>
    </body>
    </html>

  2. #2
    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
    Deja htmlentities() n'a rien à faire ici, tu peux le retirer dans les deux code.

    Ensuite, est-ce que tu as debugué un minimum ?
    Tu nous parles d'une redirection, a priori c'est celle de ton header() : c'est simple à vérifier, il suffit de remplacer le header par l'affichage d'un message.
    Si tu est bien redirigé par ton header, c'est que l'authentification fonctionne et donc que le problème est sur ta page index.php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut
    Merci de m'avoir répondu!

    Malheureusement je suis actuellement au travail, et je n'ai pas les outils adéquats pour vérifier le code.

    => Je prends note pour les htmlentities()

    => Débugué un minimum ? C'est à dire ? ^^
    Je suis novice dans le domaine. Notepad embarque t-il un débuguer? Quel débuguer me conseils-tu ?

    => Je testerai ce soir de remplacer le header par un message. Concernant la page index, je ne vois pas pourquoi en quoi elle bloquerai l'identification car aucune donnée ne transite sur cette page.


    Je viens de remarquer que j'ai mis deux session_start(); dans ma page connexion... est ce que le problème peut venir de là ?

  4. #4
    Membre chevronné
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Par défaut
    Bonjour,

    Dans connexion.php, tu as noté if (isset($_POST['submit'])) alors que ton bouton de validation n'a pas de "name" renseigné

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut
    Bien vu Valaendra !! Il fallait le voir !


    Donc maintenant j'arrive à me connecter, mais je n'ai pas le menu que je devrais avoir pour un utilisateur connecté.

    Les menu sont correctes car je les ai déjà fais fonctionner.

    Lorsque je me connecter une première fois, je ne débloque pas le menu_connecté, mais par contre lorsque je reclique sur l'onglet "Connexion", j'ai accès au menu de l'utilisateur connecté avec déconnexion. Vraiment étrange...

    register.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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    <?php
    session_start();
     
    include('include/config.php');
    ?>
     
    	<?php
    		if (isset($_POST['submit']))
    		{
    			$login = htmlentities(trim($_POST['login']));
    			$mdp = htmlentities(trim($_POST['mdp']));
    			$repeatmdp = htmlentities(trim($_POST['repeatmdp']));
    			$email = htmlentities(trim($_POST['email']));
     
    			if ($login && $mdp && $repeatmdp && $email)
    			{
    				$req = $bdd->prepare('SELECT * FROM users WHERE login = :login');
    				$req->execute(array('login'=> $login));
    				$resultat=$req->fetch();
     
    				//Vérification si pseudo déjà crée
    				if(!$resultat)
    				{
    					$req = $bdd->prepare('SELECT * FROM users WHERE email = :email');
    					$req->execute(array('email'=> $email));
    					$resul=$req->fetch();
     
    					//Vérification si mail déjà utilisé
    					if(!$resul)
    					{
    						if(strlen($login) >= 4)
    						{
    							if (strlen($mdp) >= 4)
    							{
    								if ($mdp == $repeatmdp)
    								{
    									if (filter_var($email, FILTER_VALIDATE_EMAIL))
    									{
    										// Hachage du mot de passe
    										$mdp = md5($_POST['mdp']);
     
    										$req = $bdd->prepare('INSERT INTO users(login, mdp, email) VALUES(:login, :mdp, :email)');
    										$req->execute(array(
    											'login' => $login,
    											'mdp' => $mdp,
    											'email' => $email));
    										header('Location:connexion.php');	
     
    									}else echo "Veuillez saisir une adresse mail correcte";
    								}else echo "Les mots de passe doivent correspondre";
    							}else echo "Mot de passe trop court (au moins 4 caractères)";
    						}else echo "Pseudo trop court (au moins 4 caractères)";
    					}else echo "L'adresse mail renseigné est déjà utilisée";
    				}else echo "Pseudo déjà utilisé";
    			}else echo "Veuillez saisir tous les champs !";
    		}
    	?>
     
    <!DOCTYPE html>
     
     
    <html>
    <head>
    	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    	<title>Bienvenue | FIFA Tournament 2015</title>
    	<link href="css/style.css" rel="stylesheet" type="text/css" media="screen">
    </head>
     
    <body>
    <div id="main">
    	<div id="top"> <img src="images/fifa.jpg" class="image_principale" alt="fifa15" /> </div>
     
    <nav> 	
    	<?php
    		if (isset ($_SESSION['log'])){
    			include 'menu_co.php';
    		} else {
    			include 'menu_deco.php';
    		}
    	?>
    </nav>
     
    <div id="site_content" style="height:300px">
    	<h1 style='color:#09D4FF'>S'inscrire</h1>	
    <div class="content" style='height:300px;text-align:left'>
     
    <form method="post" action="register.php">
        <label style="color:white"> Pseudo :</label><input style="background-color:#8CC6D7"; type = "text" name = "login" /> <br/><br/>
        <label style="color:white"> Mot de passe :</label><input style="background-color:#8CC6D7"; type="password" name="mdp"/> <br/><br/>
    	<label style="color:white"> Confirmation du mot de passe :</label><input style="background-color:#8CC6D7"; type="password" name="repeatmdp"/> <br/> <br/> <br/>  
        <label style="color:white"> Adresse e-mail :</label><input style="background-color:#8CC6D7"; type="email" name="email"/> <br/><br/> 
    	<input style="background-color:#8CC6D7; margin-top:20px; font-weight:bold" type="submit" value="S'inscrire" name="submit"/>
    </form>
    </div>
     
    	<footer>
    		Copyright &copy; Nico'Création Web | Mentions légales | Tous droits réservés. 
    	</footer>
     
    </div>
    </body>
    </html>
    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
    81
    82
    83
    84
    <?php
    session_start();
     
    include('include/config.php');
    ?>
     
    	<?php
    		if (isset($_POST['submit']))
    		{
    			$login = htmlentities(trim($_POST['login']));
    			$mdp = htmlentities(trim($_POST['mdp']));
     
     
    			if ($login && $mdp)
    			{
     
    				// Hachage du mot de passe
    				$mdp = md5($_POST['mdp']);
     
    				// Vérification des identifiants
    				$req = $bdd->prepare('SELECT id FROM users WHERE login = :login AND mdp = :mdp');
    				$req->execute(array(
    					'login' => $login,
    					'mdp' => $mdp));
     
    				$resultat = $req->fetch();
     
    				if (!$resultat)
    				{
    					echo 'Mauvais identifiant ou mot de passe !';
    				}
    				else
    				{ 
    					$_SESSION['id'] = $resultat['id'];
    					$_SESSION['login'] = $login;
    					header('Location:index.php');	
    					exit();
    				}	
    			}
    		}
    	?>
     
    <!DOCTYPE html>
     
    <html>
    <head>
    	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    	<title>Bienvenue | FIFA Tournament 2015</title>
    	<link href="css/style.css" rel="stylesheet" type="text/css" media="screen">
    </head>
     
    <body>
    <div id="main">
    	<div id="top"> <img src="images/fifa.jpg" class="image_principale" alt="fifa15" /> </div>
     
    <nav> 	
    	<?php
    		if (isset ($_SESSION['login'])){
    			include 'menu_co.php';
    		} else {
    			include 'menu_deco.php';
    		}
    	?>
    </nav>
     
    <div id="site_content" style="height:150px">
    	<h1 style='color:#09D4FF'>Connexion</h1>	
    <div class="content" style='height:150px;text-align:left'>
     
    <form method="post" action="connexion.php">
        <label style="color:white"> Pseudo :</label><input style="background-color:#8CC6D7"; type = "text" name = "login" /> <br/><br/>
        <label style="color:white"> Mot de passe :</label><input style="background-color:#8CC6D7"; type="password" name="mdp"/> <br/><br/>
    	<input style="background-color:#8CC6D7; margin-top:20px; font-weight:bold" type="submit" name="submit" value="Connexion"/>
    </form>
    </div>
     
    	<footer>
    		Copyright &copy; Nico'Création Web | Mentions légales | Tous droits réservés. 
    	</footer>
     
    	</div>
    </div>
    </body>
    </html>

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut
    Problème résolu... Et comme la premier fois, c'était un problème d'étourderie...

    Sur mes autre page j'avais renseigné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset ($_SESSION['logn'])){
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset ($_SESSION['login'])){
    En tout cas merci pour votre aide !!

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

Discussions similaires

  1. Connexion espace membre: utilisateur non reconnu directement
    Par Benamour Jr dans le forum Langage
    Réponses: 1
    Dernier message: 15/09/2010, 11h23
  2. [PHP] Probléme de Connexion Espace Membre
    Par Adaeria dans le forum Langage
    Réponses: 3
    Dernier message: 04/12/2009, 11h38
  3. [MySQL] Connexion espace membre
    Par marygil dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 20/10/2009, 09h25
  4. [MySQL] Problème Connexion Espace Membres
    Par Luisito31 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/02/2009, 14h21
  5. [MySQL] Script de connexion (espace membre)
    Par razorlok dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 03/06/2008, 11h41

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