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 :

Formulaire de login [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Apprenti
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Par défaut Formulaire de login
    Bonjour,

    Je suis actuellement entrain de développer un site web perso et j'ai quelques problème avec le login.

    J'ai une erreur qui apparaît lorsque j'essaye de me connecter avec login: 1 et mdp:1 (le login existe mais c'est le mauvais mdp). J'ai fais exprès de ne pas mettre le bon afin de savoir se que me retournait le formulaire. Mais du coup, il me met :
    Warning: mysqli_prepare() expects exactly 2 parameters, 1 given in C:\Users\Bryan\Desktop\Logiciel\verif.php on line 21.
    mais il continue d’exécuter le script. Chose qui ne devrait pas vu que ça ne correspond pas avec la base de donnée.

    index .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
    <?php
    session_start();
    if(isset($_SESSION['ouvert'])) { 
    header ('location: accueil.php');
    } 
    ?>
    <html>
    	<head>	<title>Login</title>
    	</head>
    <body>
    	<form action="verif.php" method="POST">
    		Votre login: <input type="text" name="login">
    		<br />
    		Votre password: <input type="password" name="pwd">
    		<input type="submit" value="Connexion">
    	</form>
    </body>
    </html>

    verif.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
    <?php
    // Je me connecte à la base de données
    $mysqli = new mysqli("localhost", "root", "1", "user");
    if ($mysqli->connect_errno) {
    	echo "Echec lors de la connexion à MySQL : (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    }
    //Sécurisation des données saisies
    $login = htmlspecialchars($_POST['login']);
    $password = htmlspecialchars($_POST['pwd']);
    //On vérifie que le login existe dans la table
    $result = mysqli_query($mysqli,"SELECT * FROM user where login = '$login'"); 
    if ($result->num_rows == 1){ 
    	//login existant
    	//Selection du password pour le login saisi
    	$reponse_login = mysqli_query($mysqli,'SELECT pwd FROM user WHERE login = '.$login.' LIMIT 1');
    	if ($stmt = mysqli_prepare($reponse_login)) {
    		/* Exécution de la requête */
    		mysqli_stmt_execute($stmt);
    		/* Association des variables de résultat */
    		mysqli_stmt_bind_result($stmt, $name, $code);
    		/* Lecture des valeurs */
    		$pwd=(mysqli_stmt_fetch($stmt)) ;
    		/* Fermeture de la commande */
    		mysqli_stmt_close($stmt);
    	}
    	//Je vérifie que le mot de passe correspond
    	//Si le mot de passe est hashé dans la bdd, il faut appliquer ce hashage à $password dans la vérification ci-dessous
    	if ($password == $pwd){
    		echo '<script language="JavaScript">alert("Mauvais login!");</script>';
    		//echo '<meta http-equiv="refresh" content="0; URL=index.php">';;
    	} 
    	else{ 
    		// La suite de mon code qui y sera après que je n'ai plus d'erreur et pour l'instant c'est :
    		echo "Ouais!!!!!! J'ai plus d'érreur!!!! ( C'EST BEAU LES REVES !) " ;
    		session_start ();
    		// on enregistre les paramètres de notre visiteur comme variables de session ($login et $pwd) 
    		$_SESSION['login'] = $_POST['login'];
    		$_SESSION['pwd'] = $_POST['pwd'];
    		$_SESSION['ouvert']=true; 
    		// on redirige notre visiteur vers une page de notre section membre
    		//header ('location: accueil.php'); 
    	}
    }
    else{ 
    	echo '<script language="JavaScript">alert("Mauvais login!");</script>';
    	//echo '<meta http-equiv="refresh" content="0; URL=index.php">';; 
    }

    Merci de votre aide!

  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
    Tu as fais une boullie de mysqli

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($stmt = mysqli_prepare($mysqli,'SELECT pwd FROM user WHERE login = ?');) {
     mysqli_stmt_bind_param($stmt, "s", $_POST['login']);
     mysqli_stmt_execute($stmt); 
     mysqli_stmt_bind_result($stmt, $pwd);
     mysqli_stmt_fetch($stmt);
    et ça c'est a retirer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $login = htmlspecialchars($_POST['login']);
    $password = htmlspecialchars($_POST['pwd']);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Apprenti
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Par défaut
    Yes Merci! ça, c'est regler. Mais maintenant, même avec le bon mot de passe, il me dit que çe n'est pas le bon...

  4. #4
    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
    Ta condition est à l'envers.
    Tu as écris que quand les deux mots de passe sont égaux, tu es dans le cas "mauvais mot de passe".

    Il faut également vérifier que l'utilisateur ait saisie un login et un mot de passe non vides.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Apprenti
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Par défaut
    ca ne marche toujours pas, même en changeant les conditions de sens...

    verif.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
    <?php
     
    // Je me connecte à la base de données
    $mysqli = new mysqli("localhost", "root", "1", "user");
    	if ($mysqli->connect_errno) {
    		echo "Echec lors de la connexion à MySQL : (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    	}
     
    //Sécurisation des données saisies
     
     
    //On vérifie que le login existe dans la table
     
    $result = mysqli_query($mysqli,"SELECT * FROM user where login = '$login'"); 
    if ($result->num_rows == 1){ 
    		//login existant
    		//Selection du password pour le login saisi
     
     
    		if ($stmt = mysqli_prepare($mysqli,'SELECT pwd FROM user WHERE login = ?')) {
    		mysqli_stmt_bind_param($stmt, "s", $_POST['login']);
    		mysqli_stmt_execute($stmt); 
    		mysqli_stmt_bind_result($stmt, $pwd);
    		mysqli_stmt_fetch($stmt);
     
     
    		//Je vérifie que le mot de passe correspond
    		//Si le mot de passe est hashé dans la bdd, il faut appliquer ce hashage à $password dans la vérification ci-dessous
    		if ($password == $pwd){
    		// La suite de mon code qui y sera après que je n'ai plus d'erreur et pour l'instant c'est :
    				echo "Ouais!!!!!! J'ai plus d'érreur!!!! ( C'EST BEAU LES REVES !) " ;
     
    				session_start ();
    				// on enregistre les paramètres de notre visiteur comme variables de session ($login et $pwd) 
    				$_SESSION['login'] = $_POST['login'];
    				$_SESSION['pwd'] = $_POST['pwd'];
    				$_SESSION['ouvert']=true; 
     
    				// on redirige notre visiteur vers une page de notre section membre
    				//header ('location: accueil.php'); 
     
    		} 
    		else{ 
    		//echo '<script language="JavaScript">alert("Mauvais login!");</script>';
    				//echo '<meta http-equiv="refresh" content="0; URL=index.php">';;
    				echo 'erreur';
    		}
     
     
    }
    }
    else{ 
    		echo '<script language="JavaScript">alert("Mauvais login!");</script>';
    		//echo '<meta http-equiv="refresh" content="0; URL=index.php">';; 
    } 
     
    ?>
    ( je suis vraiment une brêle)

  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
    Ca veut dire quoi "ça ne marche pas" ?
    Etant donné que tu as inversé les conditions, tu ne peux pas tomber sur la même chose.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Mettre en place un formulaire de login
    Par débutant_C# dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/04/2008, 12h25
  2. Réponses: 5
    Dernier message: 18/03/2007, 10h16
  3. [phpBB] Quel page contient le formulaire du login ?
    Par soad029 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 11
    Dernier message: 21/09/2006, 19h27
  4. Réponses: 12
    Dernier message: 24/09/2003, 15h26

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