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

Langage PHP Discussion :

Script d'authentification en PHP


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut Script d'authentification en PHP
    Bonsoir,

    Tout d'abord bonne fêtes à tous.

    La partie inscription étant terminé, je m'attaque donc à la partie authentification.

    Voilà dans un premier temps ce que j'ai fais.

    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
    <?php 
    $erreur = NULL;
    	if(isset($_POST['connexion_pseudo']) || isset($_POST['connexion_mop'])){
    		$host = "localhost"; 
    		$login = "Jean"; 
    		$mdp = ""; 
    		$bdd = "xxx"; 
     
    		$pseudo = $_POST['connexion_pseudo'];
    		$motdepasse = sha1($_POST['connexion_mdp']);
     
    		if(empty($pseudo) || empty($motdepasse)){
    			$erreur = 'Les champs de connexion ne sont pas tous remplis.';
    		}
    		else{
    			$connexion_sql = mysql_connect($host,$login,$mdp); 
    			$connexion_bdd = mysql_select_db($bdd);
    			if(!$connexion_sql || !$connexion_bdd){
    				$erreur = 'Connexion impossible avec le serveur distant.';
    			}
     
    			$pseudosql = mysql_real_escape_string($pseudo);
    			$mdpsql = mysql_real_escape_string($motdepasse);
    			$result_pseudo = mysql_query('SELECT * FROM membre WHERE pseudo="'.$pseudosql.'"')
    				or exit(mysql_error());
    			$nombre_pseudo = mysql_num_rows($result_pseudo);
    			$result_mdp = mysql_query('SELECT mdp FROM membre WHERE pseudo="'.$pseudosql.'"')
    				or exit(mysql_error());
     
    			if($nombre_pseudo = 0){
    				$erreur = 'Le pseudo écrit ne correspond à aucun compte.';
    			}
    			elseif($result_mdp != $motdepasse){
    				$erreur = 'Le mot de passe n\'est pas bon.';
    			}
    			else{
    				if(isset($_POST['connexion_checkbox'])){
    					setcookie("cookieremember",$checkbox,time()+60*60*24*365*100);
    				}
    				else{
    					setcookie("cookieremember","",NULL,"/");
    				}
    				session_start();
    				$_SESSION['pseudo'] = $pseudo;
    				echo 'Ca fonctionne';
    			}
    		}
    	}
    ?>
    <!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>Index</title>
    <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
    </head>
     
    <body>
    	<div id="corp"> <!-- Corp de la page -->
        	<div id="banniere"> <!-- Bannière de la page -->
            </div>
            <div id="menu"> <!-- Menu horizontal -->    
                <ul id="onglets"> <!-- Menu horizontal de la page -->
                    <li class="arrondi"><a href="index.php">Accueil</a></li>
                    <li><a href="astuces.php">Exposez !</a></li>
                    <li><a href="forum/index.php">Forum</a></li>
                </ul>
            </div>  
    		<?php 
    		if(isset($_SESSION['pseudo'])){ 
    		?>
            <div id="connexion"> <!-- Espace connection de la page -->
            	<span class="titreconnexion">C'est qui ?</span>
                <form method="post">
                	<label for="connexion_pseudo" style="font:14px calibri" maxlength="16" >Pseudo : <br/></label>
                	<input type="text" name="connexion_pseudo" /><br /><br />
                    <label for="connexion_mdp" style="font:14px calibri">Mot de passe : <br /></label>
                    <input type="password" name="connexion_mdp" /><br />
                    <a href="#" style="font:11px calibri; text-decoration:none; color:#000;" >Mot de passe oublié ?</a><br /><br/>
                    <input type="checkbox" name="connexion_checkbox" />
                    <label for="connexion_checkbox" style="font:14px calibri"> Se souvenir de moi. <br/><br/></label> 
                    <input type="submit" name="connexion_submit" Value="Connexion" /><br /><br/>
                    <a href="inscription.php" style="font:14px calibri; text-decoration:none; color:#FF9600;"><u>Pas encore inscrit ?</u></a>
                    <?php
    				if($erreur != ''){
                    echo '<span class="erreur">'.$erreur.'</span>';
    				}
    				?>
               </form>
            </div>
    		<?php
    		}
    		else{
    		echo 'KikooLOL';
    		}
    		?>
        </div>
    </body>
    </html>
    </html>
    Cependant, quelque chose ne va pas. En effet quand je rentre sur ma page je vois le message "Kikoolol" (oui je sais... ) alors que je n'ai rien renseigné dans le formulaire auparavant. :s

    De plus, j'aimerais que vous me donniez vos avis sur ce bout de script. Ce qui pourrait être perfectible etc...

    Merci bien.

  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
    Attention aux égalités :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($nombre_pseudo == 0){
    Et tu as oublié l'étape mysql_fetch_assoc() sur tes lectures de la base de données, ce n'est pas $result_mdp qui contient le mot de passe.

    Sinon pour le code :
    - a mon avis sur la premiere condition, il te faut un ET et pas un OU.
    - tu continues le traitement même si la connexion a echoué.
    - tes variables pseudosql et mdpsql sont une étape inutile, tu aurais pu faire l'echappement dés le début ; pour le mot de passe l'echappement sur une donnée passée par SHA1() est je pense inutile.
    - je ne comprends pas pourquoi tu fais deux le SELECT
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    Plop et merci de ta réactivité.

    Tout d'abord, j'ai rectifié l'égalité avec deux ==

    Et tu as oublié l'étape mysql_fetch_assoc() sur tes lectures de la base de données, ce n'est pas $result_mdp qui contient le mot de passe.
    mysql_fetch_assoc() ?? Cela voudrait dire que je dois utiliser un tableau ?
    En effet, $result_mdp ne contient pas le mdp, j'ai donc ajouter ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $echo_mdp = mysql_result($result_mdp);
    et modifié ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    			elseif($echo_mdp != $motdepasse){
    				$erreur = 'Le mot de passe n\'est pas bon.';
    			}
    - a mon avis sur la premiere condition, il te faut un ET et pas un OU.
    C'est fait. j'avais un doute là dessus, mais en effet, ça me semble plus logique.

    - tu continues le traitement même si la connexion a echoué.
    Euh... tu parles de l'authentification ou bien de la connexion à la BDD ?

    - tes variables pseudosql et mdpsql sont une étape inutile, tu aurais pu faire l'echappement dés le début ; pour le mot de passe l'echappement sur une donnée passée par SHA1() est je pense inutile.
    Quelque chose comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pseudo = mysql_real_escape_string($_POST['connexion_pseudo']);
    On m'avait dit lors de la conception de mon script d'inscription que le mysql_real_escape_string() aurait pu causer certaines erreurs lors de la vérification. :s Enfin si tu me dis que c'est bon, je te crois.

    Les MDP de ma BDD sont tous cryptées en sha1(). Donc si je le laisse en claire, normalement il ne pourrait pas retrouver le mdp cryptée dans le BDD, si ?

    - je ne comprends pas pourquoi tu fais deux le SELECT
    Le premier select permet de trouver si le pseudo mis dans le champs est égal à un pseudo de la BDD. Ensuite, le second select permet de voire si le mdp correspond bien au mdp du pseudo dans la BDD. Tu m'as compris ?

    Entre temps, hier soir, j'ai modifier quelques petites chose dans le script, ce qui donne ça :

    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 
    $erreur = NULL;
    	if(isset($_POST['connexion_pseudo']) && isset($_POST['connexion_mdp'])){
    		$host = "localhost"; 
    		$login = "Jean"; 
    		$mdp = ""; 
    		$bdd = "xxx"; 
     
    		$pseudo = $_POST['connexion_pseudo'];
    		$motdepasse = sha1($_POST['connexion_mdp']);
    		$checkbox = null;
     
    		if(empty($pseudo) || empty($motdepasse)){
    			$erreur = 'Les champs de connexion ne sont pas tous remplis.';
    		}
    		else{
    			$connexion_sql = mysql_connect($host,$login,$mdp); 
    			$connexion_bdd = mysql_select_db($bdd);
    			if(!$connexion_sql || !$connexion_bdd){
    				$erreur = 'Connexion impossible avec le serveur distant.';
    			}
     
    			$pseudosql = mysql_real_escape_string($pseudo);
    			$mdpsql = mysql_real_escape_string($motdepasse);
    			$result_pseudo = mysql_query('SELECT * FROM membre WHERE pseudo="'.$pseudosql.'"')
    				or exit(mysql_error());
    			$nombre_pseudo = mysql_num_rows($result_pseudo);
    			$result_mdp = mysql_query('SELECT mdp FROM membre WHERE pseudo="'.$pseudosql.'"')
    				or exit(mysql_error());
    			$echo_mdp = mysql_result($result_mdp);	
     
    			if($nombre_pseudo == 0){
    				$erreur = 'Le pseudo écrit ne correspond à aucun compte.';
    			}
    			elseif($echo_mdp != $motdepasse){
    				$erreur = 'Le mot de passe n\'est pas bon.';
    			}
    			else{
    				if(isset($_POST['connexion_checkbox'])){
    					setcookie("cookiepseudo",$pseudo,time()+60*60*24*365*100);
    					setcookie("cookiemdp",$motdepasse,time()+60*60*24*365*100);
    				}
    				else{
    					setcookie("cookiepseudo",$pseudo,NULL,"/");
    					setcookie("cookiemdp",$motdepasse,NULL,"/");
    				}
    				session_start();
    				$_SESSION['pseudo'] = $pseudo;
    				echo 'Ca fonctionne';
    			}
    		}
    	}
    ?>
    <!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>Index</title>
    <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
    </head>
     
    <body>
    	<div id="corp"> <!-- Corp de la page -->
        	<div id="banniere"> <!-- Bannière de la page -->
            </div>
            <div id="menu"> <!-- Menu horizontal -->    
                <ul id="onglets"> <!-- Menu horizontal de la page -->
                    <li class="arrondi"><a href="index.php">Accueil</a></li>
                    <li><a href="astuces.php">Exposez !</a></li>
                    <li><a href="forum/index.php">Forum</a></li>
                </ul>
            </div>  
    		<?php 
    		if(isset($_SESSION['pseudo'])){ 
    		?>
            <div id="connexion"> <!-- Espace connection de la page -->
            	<span class="titreconnexion">C'est qui ?</span>
                <form method="post">
                	<label for="connexion_pseudo" style="font:14px calibri" maxlength="16" >Pseudo : <br/></label>
                	<input type="text" name="connexion_pseudo" /><br /><br />
                    <label for="connexion_mdp" style="font:14px calibri">Mot de passe : <br /></label>
                    <input type="password" name="connexion_mdp" /><br />
                    <a href="#" style="font:11px calibri; text-decoration:none; color:#000;" >Mot de passe oublié ?</a><br /><br/>
                    <input type="checkbox" name="connexion_checkbox" />
                    <label for="connexion_checkbox" style="font:14px calibri"> Se souvenir de moi. <br/><br/></label> 
                    <input type="submit" name="connexion_submit" Value="Connexion" /><br /><br/>
                    <a href="inscription.php" style="font:14px calibri; text-decoration:none; color:#FF9600;"><u>Pas encore inscrit ?</u></a>
                    <?php
    				if($erreur != ''){
                    echo '<span class="erreur">'.$erreur.'</span>';
    				}
    				?>
               </form>
            </div>
    		<?php
    		}
    		else{
    		echo 'KikooLOL';
    		}
    		?>
        </div>
    </body>
    </html>
    </html>
    Merci.

  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
    Les MDP de ma BDD sont tous cryptées en sha1(). Donc si je le laisse en claire, normalement il ne pourrait pas retrouver le mdp cryptée dans le BDD, si ?
    Ce que je voulais dire c'est que ce n'est pas necessaire de faire un mysql_real_escape_string() sur une donnée qui viens de passer entre les mains de sha1()

    Le premier select permet de trouver si le pseudo mis dans le champs est égal à un pseudo de la BDD. Ensuite, le second select permet de voire si le mdp correspond bien au mdp du pseudo dans la BDD. Tu m'as compris ?
    si tu ne fais que la deuxieme requête, tu auras egalement l'information de l'existance du login.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 498
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 498
    Par défaut
    mysql_fetch_assoc() ?? Cela voudrait dire que je dois utiliser un tableau ?
    => oui fr.php.net/manual/fr/function.mysql-fetch-assoc.php
    en simplifie, tu lui dit "mets le resultat de <$result_mdp> dans <$echo_mdp>"
    mais apres, il ne sait pas quelle colone tu veux, ni de quelle ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $echo_mdp = mysql_result($result_mdp);
    $row=mysql_fetch_assoc($echo_mdp);
    echo $row["ta_colonne"];
    => "mets la ligne suivante (du resultat) dans <$row> et affiche la colonne <ta_colonne>"

    l'une de tes 2 requete sql est inutile
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    sabotage => Ah ok, d'autant plus que $mdpsql n'était pas utilisé.

    D'accord, donc le script donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    			$result_mdp = mysql_query('SELECT mdp FROM membre WHERE pseudo="'.$pseudosql.'"')
    				or exit(mysql_error());
    			$echo_mdp = mysql_result($result_mdp);	
     
    			if($echo_mdp == 0){
    				$erreur = 'Le pseudo écrit ne correspond à aucun compte.';
    			}
    			elseif($echo_mdp != $motdepasse){
    				$erreur = 'Le mot de passe n\'est pas bon.';
    			}
    _______


    Doksuri => Comme ceci ? Je suis pas très doué avec les tableaux. :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    			$pseudosql = mysql_real_escape_string($pseudo);
    			$result_mdp = mysql_query('SELECT mdp FROM membre WHERE pseudo="'.$pseudosql.'"')
    				or exit(mysql_error());
    			$echo_mdp = mysql_result($result_mdp);	
    			$row = mysql_festch_assoc($echo_mysql);
    			echo $row['mdp'];
     
    			if($echo_mdp == 0){
    				$erreur = 'Le pseudo écrit ne correspond à aucun compte.';
    			}
    			elseif($echo_mdp != $motdepasse){
    				$erreur = 'Le mot de passe n\'est pas bon.';
    			}

  7. #7
    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 peux utiliser mysql_result :
    c'est au choix :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		$echo_mdp = mysql_result($result_mdp,0);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		$row = mysql_fetch_assoc($result_mdp);
    			$echo_mdp = $row['mdp'];
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    Ok, seulement mon problème initiale persiste. :s

  9. #9
    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
    il faut que tu fasses l'effort de debuguer : place des echo pour controler la valeur des variables qui conditionnent ton script et controler les if/else que ton script emprunte ou non.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    Bon, j'ai décidé de refaire le script d'authentification :

    Ce qui donne :

    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();
    $erreur = null;
     
    if(isset($_POST['auth_pseudo']) && isset($_POST['auth_mdp'])){
     
    	$host = "localhost"; 
    	$login = "Jean"; 
    	$mdp = ""; 
    	$bdd = "xxx"; 
     
    	$co_serv = mysql_connect($host,$login,$mdp);
    	$co_bdd = mysql_select_db($bdd);
     
    	if(!$co_serv || !$co_bdd){
    		$erreur = 'Connexion au serveur distant impossible'; 
    	}
     
    	$pseudo = mysql_real_escape_string($_POST['auth_pseudo']);
    	$motdepasse = sha1($_POST['auth_mdp']);
     
    	$mdp_querry = mysql_query('SELECT mdp FROM membre WHERE pseudo="'.$pseudo.'"');
    	$echo_mdp = mysql_result($mdp_querry,0);
     
    	function verification(&$erreur,$pseudo,$motdepasse,$echo_mdp){
    		if(empty($pseudo) || empty($motdepasse)){
    			$erreur = 'Un ou plusieurs champs du formulaire sont vides';
    			return false;
    		}
    		if($echo_mdp = 0){
    			$erreur = 'Mauvai pseudo';
    		}
    		if($echo_mdp != $motdepasse){
    		$erreur = 'Mauvais mot de passe';
    		}
    	}
     
    	$verif = verification($erreur,$pseudo,$motdepasse,$echo_mdp);
    	if($verif){
    		$sessionpseudo = $_SESSION['pseudo'];
    		if(isset($_POST['checkbox'])){
    			setcookie("cookiepseudo",$pseudo,time()+60*60*24*365*100);
    			setcookie("cookiemdp",$motdepasse,time()+60*60*24*365*100);
    		}
    		else{
    			setcookie("cookiepseudo",$pseudo,NULL,"/");
    			setcookie("cookiemdp",$motdepasse,NULL,"/");
    		}
    		header('Location: test.php');
    	}
    }
    ?>
     
    <!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>Index</title>
    <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
    </head>
     
    <body>
    	<div id="corp"> <!-- Corp de la page -->
        	<div id="banniere"> <!-- Bannière de la page -->
            </div>
            <div id="menu"> <!-- Menu horizontal -->    
                <ul id="onglets"> <!-- Menu horizontal de la page -->
                    <li class="arrondi"><a href="index.php">Accueil</a></li>
                    <li><a href="astuces.php">Exposez !</a></li>
                    <li><a href="forum/index.php">Forum</a></li>
                </ul>
            </div>  
    	</div>
    </body>
    </html>		
     
    <?php
    if(!isset($_SESSION['pseudo'])){
    	?>
    	<div id="connexion"> <!-- Espace connection de la page -->
           	<span class="titreconnexion">C'est qui ?</span>
            <form method="post">
            	<label for="auth_pseudo" style="font:14px calibri" maxlength="16" >Pseudo : <br/></label>
              	<input type="text" name="auth_pseudo" /><br /><br />
                <label for="auth_mdp" style="font:14px calibri">Mot de passe : <br /></label>
                <input type="password" name="auth_mdp" /><br />
                <a href="#" style="font:11px calibri; text-decoration:none; color:#000;" >Mot de passe oublié ?</a><br /><br/>
                <input type="checkbox" name="checkbox" />
                <label for="checkbox" style="font:14px calibri"> Se souvenir de moi. <br/><br/></label> 
                <input type="submit" name="submit" Value="Connexion" /><br /><br/>
                <a href="inscription.php" style="font:14px calibri; text-decoration:none; color:#FF9600;"><u>Pas encore inscrit ?</u></a>
                <?php
    			if($erreur != ''){
                echo '<span class="erreur">'.$erreur.'</span>';
    			}
    			?>
           </form>
        </div>
    <?php
    }
    else{
    	echo 'Ca fonctionne';
    }
    ?>
    Miracle ! Le script marche ! Enfin presque tout ! :p

    Les messages d'erreurs s'affichent enfin. Cependant, quand je clique sur le bouton connexion, je tombe sur cette erreur, et là je sèche complètement. :s


    Warning: mysql_result() [function.mysql-result]: Unable to jump to row 1 on MySQL result index 4 in D:\wamp\www\xxx\test.php on line 23


    La ligne incriminé est celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $echo_mdp = mysql_result($mdp_querry,0);
    Merci.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    Tout d'abord, bonne année.

    Je reviens sur le topic car je suis entrain de chercher une solution au problème posté au dessus.

    Sabotage => Quand tu parles de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $row = mysql_fetch_assoc($result_mdp);
    			$echo_mdp = $row['mdp'];
    Le 'mdp' correspond à quoi ? Je veux dire par là, que nul part, dans mon formulaire, figure un 'mdp' seul.

    Merci.

  12. #12
    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
    $row c'est une ligne retournée par la requete
    'mdp' c'est le nom de la colonne
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre chevronné Avatar de BornBanane
    Homme Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Par défaut
    Le warning que tu affiches, c'est parce que la requête ne retourne aucune ligne. Il faudrait que tu utilises "mysql_num_rows" avant "mysql_result", pour savoir combien de lignes sont retournées.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    Merci de vos réponses.

    sabotage => Merci pour ces précisions.

    francoisIT => Quelque chose de ce genre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	$mdp_querry = mysql_query('SELECT mdp FROM membre WHERE pseudo="'.$pseudo.'"');
    	$row = mysql_num_rows($mdp_querry);
    	$echo_mdp = mysql_result($row['mdp'],0);
    J'ai testé et ça me renvoie cette erreur : Warning: mysql_result() expects parameter 1 to be resource, null given in D:\wamp\www\xxx\test.php on line 24

    J'ai fais quelques recherches sur Google, mais je n'ai rien trouvé de très probant. :s

    Merci.

  15. #15
    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
    Le but est de tester si on a un resultat ou non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $mdp_querry = mysql_query('SELECT mdp FROM membre WHERE pseudo="'.$pseudo.'"');
    	if (mysql_num_rows($mdp_querry)) {
             	$echo_mdp = mysql_result($mdp_querry,0);
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #16
    Membre chevronné Avatar de BornBanane
    Homme Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Par défaut
    Sabotage t'as répondu

    Niveau des cookies, lorsque je veux être sur d'en faire expirer un je met plutot une date antérieur à la date actuelle plutot que NULL. Et de plus je met rien comme valeur. Comme ceci le cookie n'a aucune valeur et n'est plus valide.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setcookie("cookiemdp","",time()-60*24,"/");

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    Ok merci.

    J'ai donc modifier avec ce que tu as posté au dessus. Cependant, ça me retourne l'erreur suivante :

    Notice: Undefined variable: echo_mdp in D:\wamp\www\xxx\test.php on line 43

    J'ai donc testé en mettant en début de script :
    Seulement, les messages d'erreurs ne s'affichent plus. :s

    Je dois indenter quoi dans la variable $echo_mdp ?

    Merci.

    Edit : FrançoisIT, je viens de voire ton message.

    Je viens d'appliquer les changements présentés.

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    Problème résolu.

    A l'aide de cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function search_result($pseudo){
    	$mdp_querry = mysql_query('SELECT mdp FROM membre WHERE pseudo="'.$pseudo.'"');
    	if($echo_mdp = mysql_num_rows($mdp_querry)){
    		return $echo_mdp;	
    	}
    	return $echo_mdp;	
    }
    Merci et bonne soirée.

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

Discussions similaires

  1. Script d'authentification PHP / MySQL avec session
    Par king_soft dans le forum Langage
    Réponses: 6
    Dernier message: 09/07/2010, 15h00
  2. [Sécurité] Fenêtre d'authentification en php
    Par The Wretched dans le forum Langage
    Réponses: 7
    Dernier message: 05/08/2008, 16h26
  3. [MySQL] Recherche script d'authentification MsSQL en PHP
    Par dodik dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/02/2006, 09h56
  4. Réponses: 3
    Dernier message: 03/02/2006, 23h31
  5. Exécuter un script perl à partir de php
    Par ibtisss dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 10/11/2005, 11h44

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