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 :

Authentification avec session [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 70
    Points : 54
    Points
    54
    Par défaut Authentification avec session
    Bonjour,
    je conçois actu un espace de gestion mais déjà impossible d'accéder à la page dashboard.php car les identifiants de connexion entrés retourne un message d'erreur du genre "Vérifier vos identifiants de connexion" pourtant les identifiants entrés existent bien et son présent dans la base de données. Le problème est peut être au niveau de mon script alors je m'en remet à vos conseils avisés.

    CODE:

    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
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
     
    <?php
    	session_start();
     
    	//J'ouvre ma base de donnée
        $dbname= 'mabase';
        $user = 'root';
        $password = '';
        $host = 'localhost';
     
    try {
        $bdd = new PDO('mysql:host='.$host .';dbname='.$dbname, $user, $password );
        $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $bdd->exec("SET CHARACTER SET utf8");
    } catch (PDOException $e) {
        echo "<p>Erreur : " . $e->getMessage() . "</p>";
        exit();
    }
     
    	if(isset($_POST['submit'])){
    		$errMsg = '';
    		//login and password sent from Form
    		$login = trim($_POST['login']);
    		$pass = trim($_POST['pass']);
     
    		if($login == '')
    			$errMsg .= 'Veuillez entrer votre nom<br>';
     
    		if($pass == '')
    			$errMsg .= 'Veuillez entrer votre mot de passe<br>';
     
     
    		if($errMsg == ''){
    			$records = $bdd->prepare('SELECT id,login,pass FROM  user WHERE login = :login');
    			$records->bindParam(':login', $login);
    			$records->execute();
    			$results = $records->fetch(PDO::FETCH_ASSOC);
    			if(count($results) > 0 && password_verify($pass, $results['pass'])){
    				$_SESSION['login'] = $results['login'];
    				header('location:dashboard.php');
    				exit;
    			}else{
    				$errMsg .= 'Vérifiez vos identifiants de connexion<br>';
    			}
    		}
    	}
     
    ?>
     
    <!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=iso-8859-1" />
    <title>ADMIN | Accès</title>
    	<style type="text/css">
    	body
    	{
    		font-family:Arial, Helvetica, sans-serif;
    		font-size:14px;
    		background-image: url(../Images/nice.jpg);
    		background-attachment: fixed;
    		background-repeat: no-repeat;
    		margin-top: 50px;
     
    	}
    	label
    	{
    		font-weight:bold;
    		width:100px;
    		font-size:14px;
    		color: #FFFFFF;
    	}
    	.box
    	{
    		border:1px solid #006D9C;
    		margin-left:10px;
    		width:60%;
    	}
    	.submit{
    		border:1px solid #f50c49;
    		background-color:#f50c49;
    		color:#FFFFFF;
    		float:right;
    		padding:2px;
    		margin-right: 15px;
    	}
    	.tLink{
    		font-size: 72px;
    		color: #FFFFFF;
    		font-family: Arial, Helvetica, sans-serif;
    	}
    	</style>
    </head>
    <body>
     
    	<div align="center">
    		<br />
    		<div class="tLink"><strong>ADMINISTRATION</strong></div><br />
    		<div style="width:300px; border: solid 1px #f50c49; " align="left">
    			<?php
    				if(isset($errMsg)){
    					echo '<div style="color:#FF0000;text-align:center;font-size:12px;">'.$errMsg.'</div>';
    				}
    			?>
    			<div style="background-color:#f50c49; color:#FFFFFF; padding:3px;"><b>Authentification</b></div>
    			<div style="margin:30px">
    				<form action="" method="post">
    					<label>Username:</label><input type="text" name="login" class="box"/><br /><br />
    					<label>Password:</label><input type="password" name="pass" class="box" /><br/><br />
    					<input type="submit" name='submit' value="Se connecter" class='submit'/><br />
    				</form>
    			</div>
    		</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
    Points : 44 155
    Points
    44 155
    Par défaut
    As-tu verifié si c'est la condition count() ou la condition password_verify() qui ne fonctionne pas ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Merci Sabotage,
    mais j'ai revu entièrement mon script et te marche nickel car j'accède à la page dashboard.php même si il me reste quelques petites retouches mineurs mais le plus gros est fait:

    CODE REVU:
    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
    	session_start();
     
    	//J'ouvre ma base de donnée
        $dbname= 'mabase';
        $user = 'root';
        $pass = '';
        $host = 'localhost';
        $message = "";  
     
    try {
        $bdd = new PDO('mysql:host='.$host .';dbname='.$dbname, $user, $pass );
        $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $bdd->exec("SET CHARACTER SET utf8");
    } catch (PDOException $e) {
        echo "<p>Erreur : " . $e->getMessage() . "</p>";
        exit();
    }
     
    	if(isset($_POST['submit'])){
    		 {  
               if(empty($_POST["login"]) || empty($_POST["pass"]))  
               {  
                    $message = '<label>Tous les champs sont requis</label>';  
               }  
               else  
               {  
                    $query = "SELECT * FROM matable WHERE login = :login AND pass = :pass";  
                    $statement = $bdd->prepare($query);  
                    $statement->execute(  
                         array(  
                              'login'     =>     $_POST["login"],  
                              'pass'     =>     $_POST["pass"]  
                         )  
                    );  
                    $count = $statement->rowCount();  
                    if($count > 0)  
                    {  
                         $_SESSION["login"] = $_POST["login"];  
                         header("location:dashboard.php");  
                    }  
                    else  
                    {  
                         $message = '<label>Vos identifiants sont incorrectes</label>';  
                    }  
               }  
          }  
     }  
     
     
    ?>

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    ca signifie que tu as un mot de passe non hashé dans ta bdd ce n'est pas terrible.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Effectivement mot de passe non hashé

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    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 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Et bien faudrait les hasher, sinon tu n'emploies pas le minimum à ta disposition pour la protection des données utilisateurs ce qui est assimilable à une faute professionnelle. Ce n'est peut-être pas un site important ou professionnel mais sur le principe en cas de piratage de la bdd tu pourrais être tenu pour responsable de n'avoir pas utiliser les procédures standard de protection et les éventuelles victimes pourraient se retourner contre toi. Quand on manipule des données utilisateur il y a un minimum d'éthique à respecter. Le fait de stocker les mots de passe en clair n'est donc pas anodin et même pour un site amateur (si tel est le cas) autant prendre de bonnes habitudes d'autant que cela ne coûte pas cher

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Bonjour ABCIWEB,

    suite à la remarque de sabotage à ce sujet , je me suis penché sur ce problème de sécurité car comme tu le dis si bien ça peut être assimilé à une faute professionnelle alors vu que cela ne coûte rien et que j'ai tout à gagner pourquoi ne pas bien fait les choses pendant qu'il est encore temps. Encore merci pour tout, je vous tiens informer de la suite.

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Cette fois c'est la bonne toue est parfait, encore merci pour vos conseils

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

Discussions similaires

  1. Interceptor sur une action d'authentification avec session
    Par caperinux dans le forum Struts 2
    Réponses: 0
    Dernier message: 27/11/2013, 17h19
  2. Authentification avec session
    Par afibase dans le forum Langage
    Réponses: 9
    Dernier message: 26/10/2013, 16h11
  3. [MySQL] Erreur d'authentification avec session
    Par tawba dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/03/2009, 15h11
  4. Sécuriser l'authentification avec session
    Par yoris75 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/08/2008, 16h44
  5. [Cookies] authentification avec session
    Par bressan dans le forum Langage
    Réponses: 6
    Dernier message: 14/03/2007, 20h40

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