PHP Login et mot de passe

Bonjour,

J'ai réactiver un site qui se trouvait en PHP 4 et qui maintenant est en PHP 5.

Mais mon bout de code ( qui date de 5 ans maintenant ), ne fonctionne plus,
je n'arrive pas à me connecter avec le script de login et mot de passe, il me retourne toujours une erreur.

Quelque chose vous choque là dedans:

<?php
require("connexion/conf.php");

/*-----------------------------------------------------------------*/
/* PROGRAMME PRINCIPAL   */
/*-----------------------------------------------------------------*/

// CONNEXION A LA BASE DE DONNEE
$conn = mysql_connect($sql_serveur, $sql_user, $sql_passwd) or trigger_error(mysql_error(),E_USER_ERROR);mysql_select_db($sql_bdd, $conn); 


// Récupération des variables necessaires
$login = stripslashes(mysql_real_escape_string($_POST['pseudo_membre']));
$pass = stripslashes(mysql_real_escape_string(sha1($_POST['passe_membre'])));

// ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET
// MOT DE PASSE SAISIS A LA PAGE INDEX.HTM
$requete = "SELECT id_utilisateur FROM utilisateurs WHERE pseudo = '$login' AND pass = '$pass'";    // pas besoin de ( ) 
$reponse= mysql_query($requete) or die (mysql_error()); 
$resultat = mysql_fetch_array($reponse);  // $reponse et pas $resultat 

if (!$resultat)

{
 // REDIRECTION VERS LA PAGE ERREUR
 echo header("Location:erreur.php");
 }

// SI LE LOGIN ET MOT DE PASSE SONT EXACTES 
elseif($resultat)
 {
  
    session_start();
 $_SESSION['login'] = $login;
 echo header("Location: admin.php");
 } 
 
else{
 
echo header("Location:erreur.php");
 
}

?>


EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.

7 réponses

  1. Modérateur
    Bonjour,

    il me retourne toujours une erreur.

    Quel est le message d'erreur ?
    1. Et bien il me renvoie le contenu de erreur.php.
      En gros que le login et le mot de passe ne sont pas bon.

      Il n'y a pas d'erreur dans le code, juste que le résultat est toujours faux.

      --
      1. Modérateur
        Dans ce cas, es tu sûr des identifiants ?
        As tu testé ta requête directement dans ta BDD pour voir ?
        Lors de ton passage à php5 .. as tu modifié aussi la BDD ?

        Peux tu essayer ce code et nous dire ce que ça te donne ?
        <?php
        //Démarrage 'propre' des SESSION Avant toute autre chose
        if(session_id() == '') {
            session_start();
        }
        
        // CONNEXION A LA BASE DE DONNEE
        $conn = mysql_connect($sql_serveur, $sql_user, $sql_passwd) or trigger_error(mysql_error(),E_USER_ERROR);mysql_select_db($sql_bdd, $conn); 
        
        
        // Récupération 'propre' des variables necessaires
        $login = !empty($_POST['pseudo_membre']) ? stripslashes(mysql_real_escape_string($_POST['pseudo_membre'])) : NULL;
        $pass = !empty($_POST['passe_membre']) ? stripslashes(mysql_real_escape_string(sha1($_POST['passe_membre']))) : NULL;
        
        // ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET
        // MOT DE PASSE SAISIS A LA PAGE INDEX.HTM
        if($login && $pass){
          $requete = "SELECT id_utilisateur FROM utilisateurs WHERE pseudo = '$login' AND pass = '$pass'";    // pas besoin de ( ) 
          $reponse= mysql_query($requete) or die (mysql_error() . " <br> Requete : ".$requete); 
          $resultat = mysql_fetch_array($reponse);  // $reponse et pas $resultat 
        	
          if (count($resultat)<1){
            // REDIRECTION VERS LA PAGE ERREUR
               echo "requete = ".$requete ;
             // Le temps des tests...désactivation de la redirection
             //  header("Location:erreur.php");
             // exit();
        
          }elseif($resultat) {
            // SI LE LOGIN ET MOT DE PASSE SONT EXACTES 
            $_SESSION['login'] = $login;
            header("Location: admin.php");
            exit();
          }else{
            header("Location:erreur.php");
            exit();
         }
        	
        }else{
        	echo "<br>Erreur : Merci de remplir les champs Login et Password";
        	//le temps des tests:
        	print_r($_POST);
        }
        
        
    2. Je vais l'essayer dès mon retour merci.

      Il y avait des choses a modifier dans la bdd lors du passage ?
      Excusez moi, je n'ai pas énormément de connaissances.

      Merci :)

      --
      1. J'ai essayé, mais cela me donne une page blanche sur login.php

        --
        1. En fait, je viens de me rendre compte, qu'il n'y a pas d'erreur de php au niveau du code, aucun message d'erreur, mais la base SQL ne retourne rien.

          --
          1. Modérateur
            C'est bien pour ça que je t'ai demandé :
            As tu testé ta requête directement dans ta BDD pour voir ?


            Si tu as changé de version de mysql/php .. l'encodate Sha a changé .. ton mot de passe crypté n'est donc plus le même...
            Il faut que tu te créé une page dans laquel tu code l'encodage de ton password .. puis que tu récupère cette valeur pour remplacer celle contenue dans ta BDD.
        2. Ça ne dérange personne la grosse faille d'injection MySQL ? En + de reprendre le code comme ça..
          1. Modérateur
            Si .... c'est bien pour ça que je l'ai invité à passer à la PDO.....