Script d'identification

WRInaute occasionnel
Bonjour à tous, j'ai un petit soucis sur un formulaire d'identification, quelqu'un peut il m'aider à en trouver l'origine, je sèche complètement.

Le script me dit que les logins sont incorrects, j'ai bien ma base de donnée avec ma table login et mon MDP en mD5 dedans.. :roll:

Merci par avance


Code:
<?php
$connexion = mysql_connect("localhost","root","");
if (!$connexion)
{
die('Connexion impossible : ' . mysql_error());
}
mysql_select_db("saslink", $connexion);
$loginpost = mysql_real_escape_string($_POST['login']);
$pwdpost=mysql_real_escape_string(md5($_POST['pwd']));
$sql = "SELECT id, login, mdp FROM account WHERE login='" . $loginpost . "' AND mdp='" . $pwdpost . "';";
$resultat = mysql_query($sql);
$ligne = mysql_fetch_array($resultat, MYSQL_ASSOC);
$login_db = $ligne['login'];
$pwd_db = $ligne['mdp'];

	  
    if (isset($_POST['login']) && isset($_POST['pwd'])) { 
     
          if ($login_db == $loginpost && $pwd_db == md5($pwdpost)) { 
                session_start (); 
                $_SESSION['login'] = $_POST['login']; 
                $_SESSION['pwd'] = $_POST['pwd'];
				$_SESSION['id']	= $ligne['id'];
                $_SESSION['auth'] = "ok";
		header("Location: index.php?page=raremagic");
          } 
          else { 
             echo 'Le mot de pass ou le Nom d\'utilisateur est incorrect';
          }  
    }  
    else { 
          echo 'Veuillez completez tout le formulaire';  
    }  
    ?>
 
WRInaute impliqué
Tu as compris ce que fais le code ? Ça n'en donne pas l'impression en le voyant :/

La requête elle même suffit à vérifier le login et mot de passe, pour avoir en plus une condition ?

(il faudrait mettre
PHP:
 quand tu colles du PHP dans le forum ;) )
 
WRInaute occasionnel
Je l'ai écrite donc oui =)

Je n'ai pas compris la fin de ton message, avec la requête plus je vérifie l'enssemble mais je dois avoir un soucis, car il me retourne toujours une erreur d'identifiant
 
WRInaute passionné
Blount t'indique que ton select vérifie déjà le mot de passe mais tu fais quand même un test après.

Normalement tu devrais rechercher dans la base le mot de passe à partir du login. Si le login n'existe pas tu l'indiques et sinon tu vérifies que le mot de passe est correct.
 
WRInaute impliqué
Si le mot passe est sauvegardé en MD5 dans ta base (ce que j’espère), ta requete devrait plutôt ressembler à un truc comme ça :

PHP:
<span class="syntaxdefault">$sql </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"SELECT id, login, mdp FROM account WHERE login='"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> $loginpost </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">"' AND mdp='"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> md5</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$pwdpost</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">"';"</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span>
 
WRInaute impliqué
Il applique déjà la fonction md5() à la ligne du dessus.
De plus, on ne met pas les « ; » dans les requêtes.

Mais il y a plein de truc qui ne vont pas dans son code.

Par exemple, il fait un « isset » sur les $_POST pour vérifier si les variables existes alors qu'il les utilise déjà plus haut …
Il fait un md5 sur $_POST['pwd'] pour mettre le résultat $pwdpost et plus bas, il refait un md5 dessus pour le comparer avec la valeur de la base de données.

Personnellement, quand je vois un code de ce genre, je me dis qu'il n'y a pas de réflexion derrière. J'ai l'impression qu'il met des fonctions ici et là et « prie » pour que ça passe sans savoir pourquoi.

Je peux pondre un code tout corrigé, mais ça apporterait quoi ? En programmation, il faut une certaine logique, et se dire « on vérifie l'existence des variables avant de les utiliser » en est la base.

Désolé si je peux paraître un peu brut dans ce que j'écris mais bon, c'est la réalité des choses.
 
WRInaute occasionnel
Me revoici avec le code "corrigé", j'ai en compte tes notes si tu trouves encore des incohérences je ne comprend pas je me suis vraiment penché sur le sujet :wink:

Mais j'ai toujours un soucis avec toujours un "'Le mot de pass ou le Nom d\'utilisateur est incorrect" à chaque tentative de connexion. :?

PHP:
<span class="syntaxhtml">&nbsp;&nbsp;&nbsp;&nbsp;<span class="syntaxdefault"><?php<br />$connexion&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">mysql_connect</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"localhost"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">"root"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">);<br /><br />if&nbsp;(!</span><span class="syntaxdefault">$connexion</span><span class="syntaxkeyword">)<br />{<br />die(</span><span class="syntaxstring">'Connexion&nbsp;impossible&nbsp;:&nbsp;'&nbsp;</span><span class="syntaxkeyword">.&nbsp;</span><span class="syntaxdefault">mysql_error</span><span class="syntaxkeyword">());<br />}<br /><br /></span><span class="syntaxdefault">mysql_select_db</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"saslink"</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">$connexion</span><span class="syntaxkeyword">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(isset(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">])&nbsp;&&&nbsp;isset(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'pwd'</span><span class="syntaxkeyword">]))&nbsp;{&nbsp;</span><span class="syntaxcomment">//&nbsp;test&nbsp;d'existence&nbsp;des&nbsp;variables<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span class="syntaxdefault">$loginpost&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">mysql_real_escape_string</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">]);</span><span class="syntaxcomment">//verifie&nbsp;l'utilisation&nbsp;de&nbsp;caracteres&nbsp;speciaux<br /></span><span class="syntaxdefault">$pwdpost</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">mysql_real_escape_string</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">md5</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'pwd'</span><span class="syntaxkeyword">]));</span><span class="syntaxcomment">//je&nbsp;passe&nbsp;le&nbsp;$_POST&nbsp;en&nbsp;md5&nbsp;pour&nbsp;le&nbsp;comparer&nbsp;au&nbsp;celui&nbsp;de&nbsp;la&nbsp;DB&nbsp;qui&nbsp;en&nbsp;md5<br /><br /></span><span class="syntaxdefault">$sql&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxstring">"SELECT&nbsp;id,&nbsp;login,&nbsp;mdp&nbsp;FROM&nbsp;account&nbsp;WHERE&nbsp;login='"&nbsp;</span><span class="syntaxkeyword">.&nbsp;</span><span class="syntaxdefault">$loginpost&nbsp;</span><span class="syntaxkeyword">.&nbsp;</span><span class="syntaxstring">"'&nbsp;AND&nbsp;mdp='"&nbsp;</span><span class="syntaxkeyword">.&nbsp;</span><span class="syntaxdefault">$pwdpost&nbsp;</span><span class="syntaxkeyword">.&nbsp;</span><span class="syntaxstring">"'"</span><span class="syntaxkeyword">;&nbsp;</span><span class="syntaxcomment">//&nbsp;je&nbsp;selectionne&nbsp;mes&nbsp;identifiant&nbsp;dans&nbsp;ma&nbsp;DB<br /></span><span class="syntaxdefault">$resultat&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">mysql_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$ligne&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">mysql_fetch_array</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$resultat</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">MYSQL_ASSOC</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$login_db&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">$ligne</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">];</span><span class="syntaxcomment">//je&nbsp;sors&nbsp;le&nbsp;login<br /></span><span class="syntaxdefault">$pwd_db&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">$ligne</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'mdp'</span><span class="syntaxkeyword">];</span><span class="syntaxcomment">//je&nbsp;sors&nbsp;le&nbsp;mdp<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">if&nbsp;(</span><span class="syntaxdefault">$login_db&nbsp;</span><span class="syntaxkeyword">==&nbsp;</span><span class="syntaxdefault">$loginpost&nbsp;</span><span class="syntaxkeyword">&&&nbsp;</span><span class="syntaxdefault">$pwd_db&nbsp;</span><span class="syntaxkeyword">==&nbsp;</span><span class="syntaxdefault">md5</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$pwdpost</span><span class="syntaxkeyword">))&nbsp;{&nbsp;</span><span class="syntaxcomment">//je&nbsp;compare&nbsp;mes&nbsp;logs&nbsp;récuperer&nbsp;en&nbsp;$_POST&nbsp;et&nbsp;ceux&nbsp;de&nbsp;la&nbsp;DB<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">session_start&nbsp;</span><span class="syntaxkeyword">();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">]&nbsp;=&nbsp;</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">];&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'pwd'</span><span class="syntaxkeyword">]&nbsp;=&nbsp;</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'pwd'</span><span class="syntaxkeyword">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">]&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;</span><span class="syntaxdefault">$ligne</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'auth'</span><span class="syntaxkeyword">]&nbsp;=&nbsp;</span><span class="syntaxstring">"ok"</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location:&nbsp;index.php?page=raremagic"</span><span class="syntaxkeyword">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span class="syntaxstring">'Le&nbsp;mot&nbsp;de&nbsp;pass&nbsp;ou&nbsp;le&nbsp;Nom&nbsp;d\'utilisateur&nbsp;est&nbsp;incorrect'</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span class="syntaxstring">'Veuillez&nbsp;completez&nbsp;tout&nbsp;le&nbsp;formulaire'</span><span class="syntaxkeyword">;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">?></span>&nbsp;<br /></span>
 
WRInaute impliqué
Allez je vais retentez un truc.

Ce test pourquoi y'a encore une fois le MD5 puisque tu l'a deja fait plus haut ?

PHP:
<span class="syntaxdefault">$pwd_db </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> md5</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$pwdpost</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span>
 
WRInaute impliqué
Bon, c'est déjà mieux dans le bon ordre.

Premièrement bgdc a raison sur la double utilisation de md5 (tu hashes le hash …). Mais je l'avais déjà signalé dans mon précédent poste.

Sinon, pour revenir sur la logique. Tu fais ta requête SQL de tel sorte qu'elle récupère l'id, le login et le mdp de l'utilisant ayant pour login « $loginpost » et le mot de passe « $pwdpost ».
Si ta requête retourne un résultat, alors c'est que la personne a entrée les bons identifiants. Tu le sais déjà avec la requête !!

Tu dois juste vérifier que la requête retourne un résultat, et pour ce faire, tu regardes si « mysql_fetch_array » retourne « false ».

En claire :
PHP:
<span class="syntaxdefault"><br /></span><span class="syntaxkeyword"><?</span><span class="syntaxdefault">php<br /><br />$connexion </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_connect</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"localhost"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">"root"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault">if </span><span class="syntaxkeyword">(!</span><span class="syntaxdefault">$connexion</span><span class="syntaxkeyword">)<br />{<br /></span><span class="syntaxdefault">    die</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'Connexion impossible : '</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> mysql_error</span><span class="syntaxkeyword">());<br />}<br /><br /></span><span class="syntaxdefault">mysql_select_db</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"saslink"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $connexion</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault">if </span><span class="syntaxkeyword">(isset(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">])</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">&&</span><span class="syntaxdefault"> isset</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'pwd'</span><span class="syntaxkeyword">]))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// test d'existence des variables<br /><br /></span><span class="syntaxdefault">    $loginpost </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_real_escape_string</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">]);</span><span class="syntaxcomment">//verifie l'utilisation de caracteres speciaux<br /></span><span class="syntaxdefault">    $pwdpost</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">mysql_real_escape_string</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">md5</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'pwd'</span><span class="syntaxkeyword">]));</span><span class="syntaxcomment">//je passe le $_POST en md5 pour le comparer au celui de la DB qui en md5<br /><br /></span><span class="syntaxdefault">    $sql </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"SELECT id, login, mdp FROM account WHERE login='"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> $loginpost </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">"' AND mdp='"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> $pwdpost </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">"'"</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// je selectionne mes identifiant dans ma DB<br /></span><span class="syntaxdefault">    $resultat </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    $ligne </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_fetch_array</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$resultat</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> MYSQL_ASSOC</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    $login_db </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $ligne</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">];</span><span class="syntaxcomment">//je sors le login<br /></span><span class="syntaxdefault">    $pwd_db </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $ligne</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'mdp'</span><span class="syntaxkeyword">];</span><span class="syntaxcomment">//je sors le mdp<br /></span><span class="syntaxdefault">     <br />    if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$ligne </span><span class="syntaxkeyword">!==</span><span class="syntaxdefault"> false</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        session_start </span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">        $_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">        $_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'pwd'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'pwd'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">        $_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault">    </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $ligne</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">        $_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'auth'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"ok"</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> <br />        header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location: index.php?page=raremagic"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        echo </span><span class="syntaxstring">'Le mot de pass ou le Nom d\'utilisateur est incorrect'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br />}<br /></span><span class="syntaxdefault">else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    echo </span><span class="syntaxstring">'Veuillez completez tout le formulaire'</span><span class="syntaxkeyword">;<br />}<br /></span><span class="syntaxdefault"> </span>

Sinon, pour « $_SESSION['auth'] = "ok"; », penses tu que ce soit utile ? Tu veux veux savoir si l'utilisateur est connecté, il suffit de tester l'existence de $_SESSION['id'] (par exemple).
 
WRInaute occasionnel
Résolu, je mettais deux fois la fonction MD5, la fonction md5 dans le if était en trop. :wink:

PHP:
<span class="syntaxdefault">if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$login_db </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> $loginpost </span><span class="syntaxkeyword">&&</span><span class="syntaxdefault"> $pwd_db </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> md5</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$pwdpost</span><span class="syntaxkeyword">))</span><span class="syntaxdefault"> </span>
 
WRInaute passionné
c'est plutôt :
Code:
...
    if ($ligne !== false) {
        $login_db = $ligne['login'];//je sors le login
        $pwd_db = $ligne['mdp'];//je sors le mdp
 ...
 
WRInaute occasionnel
forty a dit:
c'est plutôt :
Code:
...
    if ($ligne !== false) {
        $login_db = $ligne['login'];//je sors le login
        $pwd_db = $ligne['mdp'];//je sors le mdp
 ...

Et quel est l’intérêt de ceci ? :? Si ma requête est bonne ca sera toujours true ?
 
WRInaute passionné
$ligne['login'] n'a de valeur que si $ligne est différent de false. Avec le code donné par Blount au dessus on récupère la valeur avant le test d'existence ce qui n'est pas correct.
 
WRInaute impliqué
forty a dit:
c'est plutôt :
Code:
...
    if ($ligne !== false) {
        $login_db = $ligne['login'];//je sors le login
        $pwd_db = $ligne['mdp'];//je sors le mdp
 ...

Exacte.
Et je dirais même plus : ça n'a aucun sens.

Pourquoi assigner les valeurs à de nouvelles variables alors qu'il suffit d'exploiter $ligne ?

Voici une version allégée :
PHP:
<span class="syntaxdefault"><br /></span><span class="syntaxkeyword"><?</span><span class="syntaxdefault">php<br />session_start</span><span class="syntaxkeyword">();</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// je me préfère bien en haut<br /><br /></span><span class="syntaxdefault">$connexion </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_connect</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"localhost"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">"root"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">if </span><span class="syntaxkeyword">(!</span><span class="syntaxdefault">$connexion</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    die</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'Connexion impossible : '</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> mysql_error</span><span class="syntaxkeyword">());<br />}<br /></span><span class="syntaxdefault">mysql_select_db</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"saslink"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $connexion</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault">if </span><span class="syntaxkeyword">(isset(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">])</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">&&</span><span class="syntaxdefault"> isset</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'pwd'</span><span class="syntaxkeyword">]))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    $resultat </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_query</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"SELECT id, login, mdp FROM account WHERE<br />            login = '"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">mysql_real_escape_string</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">]).</span><span class="syntaxstring">"'<br />        AND mdp = '"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">md5</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'pwd'</span><span class="syntaxkeyword">]).</span><span class="syntaxdefault"> </span><span class="syntaxstring">"'"</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// vérification login et mot de passe existant.<br /></span><span class="syntaxdefault">    <br />    if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">false </span><span class="syntaxkeyword">!==</span><span class="syntaxdefault"> $ligne </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_fetch_array</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$resultat</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> MYSQL_ASSOC</span><span class="syntaxkeyword">))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// une entrée existe ?<br /></span><span class="syntaxdefault">        $_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $ligne</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">        $_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'pwd'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $ligne</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'pwd'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">        $_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $ligne</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">        header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Location: index.php?page=raremagic"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        echo </span><span class="syntaxstring">'Le mot de pass ou le Nom d\'utilisateur est incorrect'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br />}</span><span class="syntaxdefault"> else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    echo </span><span class="syntaxstring">'Veuillez completez tout le formulaire'</span><span class="syntaxkeyword">;<br />}<br />&nbsp;</span><span class="syntaxdefault"></span>

J'enlève des variables inutiles ($sql, $_SESSION['auth'], etc.) avec quelques aménagements.
 
Discussions similaires
Haut