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 :

Création d'un système 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 éclairé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2009
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2009
    Messages : 458
    Par défaut Création d'un système de Login
    Bonsoir,

    Je voudrais créer un système de Login pour mon site web, lorsque je tape mon pseudo && mon password je me connecte bien. Cependant lorsque je tape un mauvais password ; un message d'erreur est sensé s'afficher.

    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
    if(isset($_POST['login_user'])){
    	$username = $_POST['username'];
    	$password = $_POST['password'];
     
    	if(empty($username)) {array_push($errors, "Votre pseudo est requis."); } 
    	if(empty($password)) {array_push($errors, "Votre password est requis."); } 
     
    	if (count($errors) == 0) {
    			$password = md5($password);
    			$sql_login = $db->query("SELECT * FROM users WHERE username='$username' AND password='$password'");
     
    			while($result = $sql_login->fetch())
    			{
    				if($result == true){
    					$_SESSION['username'] = $username;
    					$_SESSION['success'] = "Tu es connecté(e)";
    					header('location: welcome.php');
    				}else {
    					array_push($errors, "Mauvaise combinaison du pseudo/password.");
    					}
    			}
     
    		}
    	}
     
     
    ?>
    Je pense que mon soucis est par rapport à ma boucle WHILE ?

    Merci pour 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
    Déjà ton code n'est pas sécurisé du tout.
    Il faut utiliser une requête préparée et des paramètres.

    Ensuite la boucle while ne sert à rien puisque tu n'as qu'un seul résultat à lire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2009
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2009
    Messages : 458
    Par défaut
    Re bonsoir,

    Merci pour ton aide Sabotage, j'ai fait quelques modifs et mon code fonctionne cependant j'aimerais savoir ce qu'il faudrait rajouter pour le sécuriser d'avantages ?


    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
    if(isset($_POST['login_user'])){
    	$username =  htmlspecialchars($_POST['username']);
    	$password = $_POST['password'];
     
    	if(empty($username)) {array_push($errors, "Votre pseudo est requis."); } 
    	if(empty($password)) {array_push($errors, "Votre password est requis."); } 
     
    	if (count($errors) == 0) {
    			$password = md5($password);
    			$requser = $db->prepare("SELECT * FROM users WHERE username='$username' AND password='$password'");
    			$requser->execute(array($username,$password));
    			$userexist = $requser->rowCount();
    			if($userexist == 1) {
    				$userinfo = $requser->fetch();
    				$_SESSION['username'] = $username;
    				//$_SESSION['success'] = "You are now logged in";
    				header('location: welcome.php');
    			}else {
    				array_push($errors, "Mauvaise combinaison du pseudo/password.");
    			}
     
    		}
    	}
     
     
    ?>

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Utilise des marqueurs pour éviter les injections SQL.
    Par ailleurs, on n'utilise pas md5 pour les mots de passe, c'est trop léger.

    http://php.net/manual/fr/pdo.prepare.php
    http://php.net/manual/fr/function.password-verify.php
    http://php.net/manual/fr/function.password-hash.php


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $password = password_verify($password);
    $requser = $db->prepare("SELECT * FROM users WHERE username=? AND password=?");
    $requser->execute(array($username,$password));
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre éclairé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2009
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2009
    Messages : 458
    Par défaut
    Bonjour Dendrite,

    Merci pour ton message, je ne vais plus utiliser le md5.

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

Discussions similaires

  1. Système de login ?
    Par AsmCode dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 31/05/2007, 13h54
  2. création d'un système de plugin
    Par st20085 dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 05/02/2007, 23h37
  3. Réponses: 10
    Dernier message: 29/01/2007, 17h01
  4. [HashTable] Création d'un système de cache : Perte de données
    Par Resyek dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 20/11/2006, 18h29
  5. Création des tables système
    Par tarik75 dans le forum Oracle
    Réponses: 7
    Dernier message: 17/08/2006, 17h02

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