Problème avec une condition

pipou
Invité n'ayant pas de compte PHPfrance

02 janv. 2011, 16:27

Bonjour,

J'ai un problème avec une condition, je ne comprend pas pourquoi elle ne redirige pas à la page voulu quand l'identifiant ou le mot de passe (même si je met un echo cela ne marche pas) est faux, voici le bout du code php concerné:
if (isset ($result) && !empty($result)) {
header('Location:mauvaisidentifiant.php');

}
Le code PHP de l'include connexion avec le html
      <?php
	 include_once 'include_class.php';

	  
	  if (!empty ($_POST)) {
	  extract($_POST);
	  $valid = true;
	  }
	  
	  
	 if (empty ($pseudo)) {
	 $valid = false;
	 $erreurPseudo = true;	 
	 }
	 
	 if(empty ($pass)) {
	 $valid = false;
	 $erreurPass = true;
	 }
	 
	 if ($valid) {
$result = membreFactory::logUtilisateur($login, $pass);
	 }
	 
	 if (!empty($erreurPseudo) && isset($erreurPseudo)) { 
 }   

	 	 if (!empty($erreurPass) && isset($erreurPass)) { 


	 }   
	 



 if (!empty($_SESSION['Auth'])) {
 echo 'Bienvenue' .$_SESSION['Auth']['login'].'!';
 echo '<a href="pageMembre.php">Page Membre</a>'; 

if ($_SESSION['Auth']['type'] == 'admin') {
echo '<a href="admin.php">Panneau d\'administration</a>';
}
echo '<a href="logout.php">Deconnexion</a>';
}else {

if (isset ($result) && !empty($result)) {
header('Location:mauvaisidentifiant.php');

}
}



?>	

<form action="index.php" method="post">

	   <div id="connexion"> <img src="images/avatar.png" class="avatar" alt="Avatar de base du site"/>

	  <div id="champs">
        <input id="champ_pseudo" type="text" value="<?php if(isset($pseudo) && $pseudo !="") { echo $pseudo;} else {echo 'pseudo';}?>" accesskey="4" name="login" />
        <input id="champ_mdp" type="password" value="<?php if(isset($pass) && $pass !="") { echo $pass;} else {echo 'password';}?>" accesskey="4" name="pass" />
      </div>
	    <div id="boutonconnexion"><input type="submit" id="porte" value=""/></a></div></form>
   <a href="inscription.php" id="textconnexion">S'INSCRIRE !</a><a href="oublie.php" id="textconnexion2">MOT DE PASSE OUBLI&Eacute; ?</a> </div>
Et la méthode nécessaire au bon fonctionnement de ce code:
static function logUtilisateur($loginIn, $passwordIn) {

$bdd = utilitaire::ConnexionBDD();
$query = 'SELECT id,login, pass, type FROM Membres WHERE login=?';
$stmt = $bdd->prepare($query);
if($stmt) {
$stmt->bind_param('s', $loginIn);
$stmt->execute();
$stmt->store_result();

if ($stmt->num_rows() !=0) {

$stmt->bind_result($id, $login, $pass, $type);
while ($stmt->fetch()) {
if($pass === md5($passwordIn)){
if (self::compteActif($loginIn)){
$_SESSION['Auth'] = array(
'id' => $id,
'login' => $login,
'pass' => $pass,
'type' => $type
);

} else {
return $result = 'Compte non activé';
}}
else {
return $result = 'Mauvais identifiant';
}
}
} else {
return $result = 'Mauvais identifiant';

}
}
$stmt->close();
$bdd->close();
}
Merci beaucoup de votre aide.

ViPHP
ViPHP | 5462 Messages

02 janv. 2011, 16:52

si tu fais un var_dump($result); apres $result = membreFactory::logUtilisateur($login, $pass);
ca donne quoi ?

sinon pour ca :
return $result = 'Mauvais identifiant';
inutile de mettre une variable
return 'Mauvais identifiant';
ou alors
$result = 'Mauvais identifiant';
return $result;

empty fais aussi office de isset, donc
!empty($erreurPseudo) && isset($erreurPseudo)
un
!empty($erreurPseudo)
suffis

Mammouth du PHP | 1967 Messages

03 janv. 2011, 10:25

une fonction header() doit apparaitre avant la moindre sortie de php (typiquement un echo) à moins de gérer une temporisation
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 422 Messages

03 janv. 2011, 15:47

et aussi
Pour la plupart des bases de données, PDOStatement::rowCount() ne retourne pas le nombre de lignes affectées par une requête SELECT. À la place, utilisez PDO::query() pour faire une requête SELECT COUNT(*), puis utilisez PDOStatement::fetchColumn() pour récupérer le nombre de lignes retournées. Votre application peut ainsi effectuer la bonne action
http://fr2.php.net/manual/fr/pdostatement.rowcount.php

ps : empty et isset ne sont pas identique, ca dépend ce que l'on test (http://fr2.php.net/manual/fr/function.empty.php)

++
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

ViPHP
ViPHP | 5462 Messages

03 janv. 2011, 17:56

ps : empty et isset ne sont pas identique, ca dépend ce que l'on test (http://fr2.php.net/manual/fr/function.empty.php)
et oui c'est toute la différence entre "empty fais aussi office de isset" et "empty et isset sont identique"