[RESOLU] Vérification du login et du mdp

alexandre44
Invité n'ayant pas de compte PHPfrance

31 oct. 2012, 11:48

Bonjour, après moult recherches sur le Web je n'ai pas trouvé chaussure à mon pied.

Dans mon appli' deux types de membres peuvent se connecter.
Vous êtes un:
			<input type='radio' value='eleve' name='typeMembre'> élève
			<input type='radio' value='professeur' name='typeMembre'> professeur



Ce qui me donne à la reception :
<?php
session_start(); 
include ('mesFonctions.php');
$uneConnexion=connexion();
if(isset($_POST))
	{
	$_SESSION['Auth'] = array (
			'identifiant' => $_POST['identifiant'],
			'mot_de_passe' => $_POST['mot_de_passe']
			);
	}

if (isset($_SESSION['Auth'])  && !empty($_POST['identifiant']) && !empty($_POST['mot_de_passe']))
				&& !mdpValide($uneConnexion[1],$_POST['identifiant'],$_POST['mot_de_passe'],$_POST['typeMembre']))
	{	 ... }
J'arrive donc dans mon fichier 'mesFonctions.php'
function mdpValide($uneConnexion,$login,$mdp,$typeMembre) 
		{
        $leBonMdp=false;
		$requete = "SELECT mdp FROM $typeMembre WHERE login='$login'";
		$resultatRequete = $uneConnexion->query($requete);
	   
		if ($resultatRequete == $mdp){
			$leBonMdp=true;
			} 
        return $leBonMdp;
		}
C'est ici que j'ai mon problème où $leBonMdp renvoi false alors qu'il ne devrait pas.
C'est lié à ma mauvaise connaissance de la comparaison mais je ne sais pas comment faire.

Merci d'avance de vos réponses !

Eléphant du PHP | 267 Messages

31 oct. 2012, 12:30

salut,

la fonction qui teste l'identification :
/**
 * Fonction permettant de tester si une personne est identifiée
 * Cette fonction lance une exception execQueryMysqlException si l execution de la requete a échoué
 * @param string $login
 * @param string $password
 * @param object $dbh1
 * @return string or bool
 */
function isIdentified($login, $password, $dbh1){
    $req1 =
        "SELECT `statut`
         FROM `compte`
         WHERE `login` = '".$login."'
         AND `password` = '".$password."'";
    $res1 = $dbh1->query($req1);
    if ( $row1 = $res1->fetch() ) {
        return $row1[0];
    }
    else {
        return false;
    };
}
De plus, ce n'est pas à l'utilisateur de cocher s'il est étudiant ou professeur
C'est à toi de récupérer l'info dans la base de données
La fonction ci-dessus teste l'identification et renvoie le statut si l'identification est OK

@+
dix2

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

31 oct. 2012, 12:44

function mdpValide($uneConnexion,$login,$mdp,$typeMembre) 
		{
        $leBonMdp=false;
		$requete = "SELECT mdp FROM $typeMembre WHERE login='$login'";
		$resultatRequete = $uneConnexion->query($requete);
	   
		if ($resultatRequete == $mdp){
			$leBonMdp=true;
			} 
        return $leBonMdp;
		}
C'est ici que j'ai mon problème où $leBonMdp renvoi false alors qu'il ne devrait pas.
C'est lié à ma mauvaise connaissance de la comparaison mais je ne sais pas comment faire.

Merci d'avance de vos réponses !
Effectivement, si la méthode $uneConnexion->query($requete); ne retourne pas la valeur du champ mdp de la requête alors le test IF qui suit ne fonctionnera jamais. Je ne sais pas comment est écrite la méthode query de l'objet connexion mais à mon avis elle ne retourne pas directement la valeur du champ donné dans le SELECT.

Je te préconise cette solution SQL qui interroge le mdp tout comme tu fais avec le login:
$requete = "SELECT count(*) as nbre FROM $typeMembre WHERE login='$login' AND mdp='$mdp' ";
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

alexandre44
Invité n'ayant pas de compte PHPfrance

01 nov. 2012, 16:46

Bonjour,

en fait c'est que j'utilise deux tables différentes.
Et sadeq j'ai pris ta solution, merci bien à vous deux.

alexandre44
Invité n'ayant pas de compte PHPfrance

01 nov. 2012, 16:47

Comment je fais pour mettre en résolu ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 nov. 2012, 22:46

tu ne peux pas il faut être membre, un modérateur doit pouvoir s'en occuper.


@+
Il en faut peu pour être heureux ......