PHP - MySQL : Création d'un Login

Résolu/Fermé
PrinceKreol Messages postés 291 Date d'inscription vendredi 23 octobre 2009 Statut Membre Dernière intervention 9 avril 2013 - Modifié par PrinceKreol le 21/06/2012 à 15:45
PrinceKreol Messages postés 291 Date d'inscription vendredi 23 octobre 2009 Statut Membre Dernière intervention 9 avril 2013 - 21 juin 2012 à 16:18
Bonjour la communauté de CCM

Je suis en train de faire un site sauf qu'un obstacle se pose à moi.
En effet, mon login me fait une joli erreur et vu que cela fait une bonne journée dessus et que cela commence à me tendre léger je fais appelle à vous.

Mon code :

<?php 
 ################################################################# 
 # 
 # Programme:  Login.php 
 # Auteur:    # 
 ################################################################# 
 # 
 #  Date :  Juin 2012 
 # Version :  1.0 
 # Révisions :  1 
 # 
 ################################################################# 
 # 
 # Permet un login pour l'administration du site 
 #   
 # 
 ################################################################# 
  
#################################################################  
 // Déclaration des variables 
################################################################# 
  

#################################################################  
 //Programme 
################################################################# 

//Test la connexion à la base de donnée 
try 
{ 
 //Connexion à la base avec la méthode PDO 
 $BDLogin = new PDO('mysql:host=localhost;dbname=DB_Links', 'root', ''); 
} 
//Test si il y a des soucis lors de la connexion 
catch(Exception $e) 
{ 
 //Si il y a des erreurs, afficher un message d'erreur 
        die('Erreur : '.$e->getMessage()); 
} 
//Ok, Alors Let's Go :-D 

 // Test si le username ou le password est seter 
 if ( isset ($_POST['username']) || isset ($_POST['password']) ) 
 { 
  //Déclaration des variables 
  $Username=$_POST['username']; 
  $Password=$_POST['password']; 
  $Login=''; 
   
  // Test si le username n'est pas vide 
  if (empty($_POST['username'])) 
  { 
   //Kill la suite du processe et affiche un message d'erreur 
   die ("Veuillez remplir le champ nom d'utilisateur !"); 
  } 
  // Test si le mot de passe n'est pas vide 
  if (empty($_POST['password'])) 
  { 
   //Kill la suite du processe et affiche un message d'erreur 
   die ("Veuillez remplire le champ mot de passe !"); 
  } 

  // Test si l'utilisateur est bon, et si son mot de passe est correct et execute la requete 
  $Login = $BDLogin->query('SELECT User_Login FROM t_login WHERE  User_Login = "' . $Username . '" AND Password_Login = "' . $Password . '"' . "'"); 
   
  // Regarde les valeurs retournees par la base 
  if (mysql_num_rows($Login)==1) 
  { 
   //Démarre le login 
   session_start(); 
   header('location:./home.php?Page=Administration');   
  } 
  else 
  { 
   // sinon et bien qqch a mal fonctionné ! authentification impossible 
   echo "Login ou Mot de passe incorrect!"; 
  } 
 } 



#################################################################  
 //Interface 
################################################################# 
?> 

<br/> 
<h2> 
 Page de Login 
</h2> 
<br/> 
<form method="POST"> 
 <table> 
  <tr> 
   <td> 
    Login : 
   </td> 
   <td> 
    <input type="text" name="username"/> 
   </td> 
  </tr> 
  <tr> 
   <td> 
    Mot de passe : 
   </td> 
   <td> 
    <input type="password" name="password"/> 
   </td> 
  </tr> 
  <tr> 
   <td colspan="2"> 
   <input type="submit" value="Connexion !" name="submit"/> 
   </td> 
  </tr> 
 </table> 
</form> 



Message d'erreur afficher :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\@ProjetSiteWeb\McdoSite\web\Login.php on line 68
Login ou Mot de passe incorrect!





Vous avez une idée ?

Merci d'avance du temps qui sera passé à m'aider.
Meilleures salutations


3 réponses

Bonjour

Je me demande bien pourquoi, mais cette erreur est en train de devenir un classique.

Tu mélanges les fonctions PDO et les fonctions mysql_
Ce sont deux manières différentes - et incompatibles - de communiquer avec mysql.
Puisque tu as commencé en PDO, continue : au lieu d'utiliser mysql_num_rows :
if ($Login->rowCount()==1)
1
ajp55 Messages postés 426 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 17 février 2015 23
21 juin 2012 à 16:10
l'argument dans le
mysql_num_row() est non valide.
teste le code suivant

$Login = $BDLogin->query('SELECT User_Login FROM t_login WHERE  User_Login = "' . $Username . '" AND Password_Login = "' . $Password . '"');
...............

le problème se situe là où tu ferme ton select. ferme juste avec un ' " '); et non '"' . "'");
1
PrinceKreol Messages postés 291 Date d'inscription vendredi 23 octobre 2009 Statut Membre Dernière intervention 9 avril 2013 7
21 juin 2012 à 16:18
Oh magnifique,

Tu es trop bon.

Je me sens trop nul, passer une demi journée sur un problème résolu par un autre en 2 sec...

Merci beaucoup
0