PHP Login et mot de passe

TRUNCKS Messages postés 1066 Statut Membre -  
jordane45 Messages postés 40053 Date d'inscription   Statut Modérateur Dernière intervention   -
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.
.
A voir également:

7 réponses

jordane45 Messages postés 40053 Date d'inscription   Statut Modérateur Dernière intervention   4 762
 
Bonjour,

il me retourne toujours une erreur.

Quel est le message d'erreur ?
0
TRUNCKS Messages postés 1066 Statut Membre 7
 
Merci :)

--
0
TRUNCKS Messages postés 1066 Statut Membre 7
 
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.

--
0
jordane45 Messages postés 40053 Date d'inscription   Statut Modérateur Dernière intervention   4 762
 
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);
}

0
TRUNCKS Messages postés 1066 Statut Membre 7
 
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 :)

--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TRUNCKS Messages postés 1066 Statut Membre 7
 
J'ai essayé, mais cela me donne une page blanche sur login.php

--
0
TRUNCKS Messages postés 1066 Statut Membre 7
 
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.

--
0
jordane45 Messages postés 40053 Date d'inscription   Statut Modérateur Dernière intervention   4 762
 
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.
0
Utilisateur anonyme
 
Ça ne dérange personne la grosse faille d'injection MySQL ? En + de reprendre le code comme ça..
0
jordane45 Messages postés 40053 Date d'inscription   Statut Modérateur Dernière intervention   4 762
 
Si .... c'est bien pour ça que je l'ai invité à passer à la PDO.....
0