Rendre login.php retourne la résultat correct

Fermé
arfah Messages postés 23 Date d'inscription mercredi 23 mars 2011 Statut Membre Dernière intervention 29 mars 2011 - 23 mars 2011 à 20:45
arfah Messages postés 23 Date d'inscription mercredi 23 mars 2011 Statut Membre Dernière intervention 29 mars 2011 - 25 mars 2011 à 17:39
bonjour,

j'ai crée une formulaire d'identification avec login et mot de passe tel que le mot de passe est crypte.

aussi, une 2 eme formulaire d'inscription qui insère mot de passe crypte dans BD.

le problème de ce code login.php de la page identification :

retourne une résultat fausse lorsque je tape login et mot de passe correcte .

avec passoublie.html si le mot de passe est faut
CSFT.html si le login et mot de passe sont correcte

sinon retourne nouveaumembre.html



s'il vous plais , comment rendre ce code retourne le résultat correcte lors de taper login et mot de passe ?


code de page identification

<?php
mysql_connect("127.0.0.1","root","");
mysql_select_db("internaute");
if(isset($_POST) && !empty($_POST['login']) && !empty ($_POST['pass']))
{
$webUser = $_POST['login'];
$webUserPass = md5(addslashes(htmlspecialchars($_POST['pass'] )));
$qry = "SELECT mot_passe AS existe FROM ins WHERE login = '". $webUser ."' AND mot_passe = '" . $webUserPass . "'";
$req = mysql_query($qry) or die('Erreur SQL !<br>'.$qry.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
if($data['mot_passe'] != $webUserPass)
{
include('passoublie.html');
exit;
}

else { session_start();
$_SESSION['login'] = $webUser;
include('CSFT.html');
}
}
else {
include('nouveaumembre.html');
exit;
}
?>


merci
A voir également:

2 réponses

JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 24/03/2011 à 13:55
Salut ... :S

try {   
 $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;   
 $bdd = new PDO('mysql:host=localhost;dbname=ta_bdd', 'root', '', $pdo_options);   
 }   

catch (Exception $e) {   
 die('Erreur : ' . $e->getMessage());   
 }   

if(isset($_POST) && !empty($_POST['login']) && !empty ($_POST['pass'])) {   
  $webUser = htmlentities($_POST['pseudo']);   
  $resultat = $bdd->prepare('SELECT mot_passe FROM ins WHERE login = ?');   
  $resultat->execute(array($webUser));   

  $data = $resultat->fetch();   
  $mdp = md5(htmlentities($_POST['pass']));   

  if(isset($data['mot_passe']) AND $mdp == $data['mot_passe']) {   
    session_start();    
    $_SESSION['login'] = $webUser;    
    include('CSFT.html'); //je vois pas l'intérêt ...!!!   
  }   
  else {   
    echo 'Mot de passe oublié ?! <a href="passoublie.html">Cliquez ici</a><br />';   
    ?>   
    <form method="post" action="page_courante.php">   
      <p><input type="text" name="login" /></p>   
      <p><input type="password" name="pass" /></p>   
      <p><input type="submit" value="Envoyer" /></p>   
    </form>   
    <?php }   
}   
else header("Location: " . $_SERVER['HTTP_HOST'].'/nouveaumembre.html');
     ?>


1 - On se connecte via PDO.
2 - On vérifie que les champs on bien été rempli ...
3 - On prepare la requete. (plus sécurisé qu'une resquete directe).
4 - On execute la requete.
5 - On recupere les infos.
6 - On crypte le mot de passe entré par l'utilisateur, et On vérifie qu'on a bel et bien un résultat(mot de passe), puis on compare ces deux derniers.
- Dans le cas ou on a pas de résultat, c'est que l'utilisateur n'est pas encore inscrit, alors on le redirige vers la page nouveaumembre.html .
- Dans le cas ou les mots de passe sont égaux, alors on crée une session.

7 - Quant au passoublie.html, je vois pas l'intérêt d'inclure la page, tu dois juste afficher un lien a l'utilisateur pour que si il a oublier son mot de passe, alors il clique sur ce dernier pour le récupérer, en lui réaffichant aussi le formulaire pour qu'il ressaye d'entrer le mot de passe.

Bonne chance ...
0
arfah Messages postés 23 Date d'inscription mercredi 23 mars 2011 Statut Membre Dernière intervention 29 mars 2011
24 mars 2011 à 13:05
bonjour

Merci beaucoup votre aide .

J'utilise votre code mais j'ai modifie parque il y a des instructions difficiles . Mais, j'ai le même problème :

je tape login et mot de passe correcte , il affiche que votre mot de passe est incorrecte

Aussi , je teste si les deux n'existent pas dans BD, normalement, il retourne nouveau membre . Mais , il affiche que votre mot de passe est incorrecte.



N.B. les champs de table inscription nome ins : nom,prenom, email,login,mot_passe,confirmer_mot_passe
les champs de identification: login , pass

le code :
<?php
mysql_connect("127.0.0.1","root","");
mysql_select_db("internaute");
if(isset($_POST) && !empty($_POST['login']) && !empty ($_POST['pass']))
{
$webUser = htmlentities($_POST['login']);
$resultat = "SELECT mot_passe FROM ins WHERE login='".$webUser."'" ;
$req = mysql_query($resultat) or die('Erreur SQL !<br>'.$resultat.'<br>'.mysql_error());
$data = mysql_fetch_array($req);
$mdp = md5(htmlentities($_POST['pass']));

if(isset($data['mot_passe']) AND $mdp == $data['mot_passe'])
{
session_start();
$_SESSION['login'] = $webUser;
include('CSFT.html');
}
else
{
include('mot_passeoub.html');
}
}
else
include('nouveaumembre1.html');

?>





S'il vous plais, je te donne le code de login.php et die moi quel est erreur de ce code pour retourne le résultat correcte?
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
24 mars 2011 à 13:43
ok... vas y ...!!!
0
arfah Messages postés 23 Date d'inscription mercredi 23 mars 2011 Statut Membre Dernière intervention 29 mars 2011
24 mars 2011 à 13:51
ce quoi ok vas...; y ?


je te die que le code que je te donne ne fonctionne pas

Donc , s'il vous aide moi de trouver une solution de ce code pour qu'il fonctionne


merci
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 24/03/2011 à 18:34
Ok, alors pour resumer ...

La structure de ta table ...
Nom de la table : ins
Champs nécessaires : login, mot_passe

Formulaire :
Méthode de l'envoi du formulaire : post
Nom de l'input n°1 : login
Nom de l'input n°2 : pass


if(isset($_POST['login']) AND isset($_POST['pass'])) { // Début du premier if   
         
         
    $webUser = htmlentities($_POST['login']);     
    $mdp = htmlentities($_POST['pass']);     
         
         
         
    try {     
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;     
        $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options); // Connexion a la base de données 
    }     
    catch (Exception $e) {     
        die('Erreur : ' . $e->getMessage()); //On recupere les erreurs     
    }     
         
         
         
    $resultat = $bdd->prepare('SELECT mot_passe FROM ins WHERE login = ?'); // On prepare la requete     
    $resultat->execute(array($webUser)); // On execute la requete     
         
    $data = $resultat->fetch(); // On recupere les resultats  
         

    $mdp = md5($mdp);     
    if(isset($data['mot_passe']) AND $mdp == $data['mot_passe']) { // Si le mot de passe existe et est egale au mot de passe entré par l'utilisateur      
        session_start();     
        $_SESSION['login'] = $webUser;     
        include('CSFT.html'); //je vois toujours pas l'intérêt ...!!!     
    }     
         
         
    else { // Debut du else -----------------------     
        echo 'Mot de passe oublié ?! <a href="passoublie.html">Cliquez ici</a><br />';     
        ?>     
        <form method="post" action="page_courante.php">     
            <p><input type="text" name="login" /></p>     
            <p><input type="password" name="pass" /></p>     
            <p><input type="submit" value="Envoyer" /></p>     
        </form>     
        <?php } // Fin du else ---------------------     
} // Fin du premier Else     

else header("Location: nouveaumembre.html");     



Note :
Ton code était tros embrouillé, c'est pour ça que je t'incite a utiliser celui la, il est plus claire, mieux structuré, et plus performant ...
0
arfah Messages postés 23 Date d'inscription mercredi 23 mars 2011 Statut Membre Dernière intervention 29 mars 2011
24 mars 2011 à 15:09
bonjour,

merci beaucoup de votre explication et pour votre aide .
Mais , easyphp affiche l'erreur de la ligne de cette instruction:

la ligne 6 qui commence par : try { ......... ET erreur est :

Parse error: parse error, unexpected '{' in c:\program files\easyphp\www\projet3\conn.php on line 6

je pense qui il est impossible d'enlever '{'

s'il vous plais, comment éviter çà ?

merci beaucoup
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 24/03/2011 à 15:53
Quelle version de easyPHP tu as??
0
arfah Messages postés 23 Date d'inscription mercredi 23 mars 2011 Statut Membre Dernière intervention 29 mars 2011
24 mars 2011 à 17:13
bonjour,

phpMyAdmin 2.2.6
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 24/03/2011 à 18:17
c'est la version de php que tu devrais renseigner ??!!
mais bref, mets le a jour ...
https://www.easyphp.org/
0
arfah Messages postés 23 Date d'inscription mercredi 23 mars 2011 Statut Membre Dernière intervention 29 mars 2011
24 mars 2011 à 18:32
Pardons, mais je n'ai pas compris ce que te me die

S'il vous explique moi mieux, Q'est ce que je peut faire pour finit mon problème ?

merci
0