Page 1 sur 1

Creation de formulaire

Posté : 26 mai 2009, 16:56
par sanigui
Bonjour,
je viens de débuter dans le php et souhaite créer un formulaire d'identification sur mon site.
Lorsque le client rentrera son login et mdp, une requete est effectuée afin d'aller chercher dans la BDD les informations voulu.
Le problème est que mon formulaire de vérification ne fonctionne pas.
Voici le formulaire de login en html (très basique, si vous avez des idées pour l'améliorer...) :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">

<form method="post" action="auth2.php">
  <fieldset> <legend></legend></fieldset><fieldset> 
  <p>Veuillez entrer vos identifiants afin d'acc&egrave;der &agrave; votre espace 
    perso.</p>
  <p>En cas de perte d'identifiant ou de mot de passe, merci de nous contacter 
    au 02.99.99.99.99</p>
  <p>Identifiant :</p>
  <p> 
    <input type="text" name="login">
  </p>
  <p>Mot de passe :</p>
  <p> 
    <input type="password" name="mdp">
  </p>
  <p>
    <input type="submit" name="submit" value="Envoyer">
  </p>
  </fieldset> 
</form>

Et voici mon fichier PHP :
<?php 
// Script de connexion pour afficher le statut du dossier client 

// Variables de connexion 
$serveur='localhost'; // nom du serveur 
$login='root'; // nom d'utilisateur mysql 
$pwd='password'; // mot de passe mysql 
$bdd='password'; // nom de la base de donnée 

// Ligne de connexion 
mysql_connect($serveur,$login,$pwd) or die('Erreur de connexion à la base'.mysql_error()); 

// Connexion à la table souhaité 
mysql_select_db($pwd) or die('Erreur de connexion à la talbe'.mysql_error());

$loginForm = $_post['login'];
$pwdForm = $_post['mdp'];

// Requête retournant le nom, prénom, statut du dossier en fonction de l'utilisateur loggué 
$requete=mysql_query("Select Nom_Cli, Prenom_Cli, Statut_Dossier
					  from jos_client 
					  where Nom_Cli=$loginFrom and Mdp_Cli=$pwdForm"); 
 /**  
     * On récupère les données  
     * Tant qu'une ligne sera présente, la boucle continuera  
     */  
     while($resultat = mysql_fetch_array($requete))  
     {  
        ?>

<?php echo $resultat['Nom_Cli']; ?><?php echo $resultat['Prenom_Cli']; ?><br /> <?php		  		  
     }  
		

// Déconnexion de la bdd 
mysql_close(); 
?> 

et j'ai comme erreur :



Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\OCS Inventory NG\xampp\htdocs\test\Auth2.php on line 27


Pouvez-vous m'aider ?
Merci.

Posté : 26 mai 2009, 17:21
par dunbar
Salut,

Et comme ceci :?:
<?php
// Script de connexion pour afficher le statut du dossier client

// Variables de connexion
$serveur  = 'localhost'; // nom du serveur
$login    = 'root'; // nom d'utilisateur mysql
$pwd      = 'password'; // mot de passe mysql
$bdd      = 'password'; // nom de la base de donnée


               $link = mysql_connect($serveur, $login, $pwd)
                  or die ("Connexion impossible avec MySQL");
                //-->Connexion a la base
                mysql_select_db ($bdd)
                  or die ("Connexion impossible avec la base".$bdd);

$loginForm  = mysql_real_escape_string($_post['login']);
$pwdForm    = mysql_real_escape_string($_post['mdp']);

	// Requête retournant le nom, prénom, statut du dossier en fonction de l'utilisateur loggué
	$requete ="SELECT Nom_Cli, Prenom_Cli, Statut_Dossier
	                      FROM jos_client
	                      WHERE Nom_Cli = '" . $loginFrom . "'
	                      AND Mdp_Cli = '" . $pwdForm . "'";
               $result = mysql_query($requete) or die("Erreur MySQL : Impossible de vérifier les données");

      $data = mysql_fetch_array($result);        
 /**
     * On récupère les données
     * Tant qu'une ligne sera présente, la boucle continuera
     */
          echo $data['Nom_Cli'].'<br>'; 
          echo $data['Prenom_Cli'];
        

 
     


// Déconnexion de la bdd
mysql_close();?>

Posté : 26 mai 2009, 17:22
par AB
Il y a un tuto avec code complet ici http://www.phpfrance.com/forums/voir_sujet-242539.php

Posté : 26 mai 2009, 17:51
par Ryle
Rooh l'aut, comment il fait de la pub pour ses tutos ! ;)


Le message d'erreur t'indique un problème à la ligne 27, avec la fonction mysql_fetch_array(). Il te précise même que l'argument spécifié pour cette méthode n'est pas une ressource MySQL valide.

Il faut donc regarder ce que contient ta variable $requete, à savoir, le résultat de ta requête. On peut donc supposer qu'il y a une erreur dans ta requête, ce que tu peux vérifier avec un mysql_error() ou en affichant la requête générée avant de l'exécuter.

En l'occurence, je dirais que tes chaines login et pwd ne sont pas délimitées par des apostrophes, et que mysql doit avoir bien du mal à essayer de les interpréter comme des instructions sql :)

Posté : 26 mai 2009, 18:20
par AB
Rooh l'aut, comment il fait de la pub pour ses tutos ! ;)
Yes :lol:

Ben oui les tutos ça sert aussi pour éviter de se répéter :)

Et comme le code était approximatif... pas de protection des données pour les requêtes, utilisation d'une boucle while quand on attend qu'un résultat... affichage de données sans protection ... je me disait que c'était pas plus mal de commencer par la case départ :wink:

Posté : 27 mai 2009, 10:00
par Invité
Merci pour vos réponses.
La solution de AB me correspondrait mieux.
Le seul soucis est que dans le script de connexion, il est écrit qu'il faut indiqué la page que l'on souhaite afficher.
"// A MODIFIER Remplacer le '#' par l'adresse de votre page de destination, sinon ce lien indique la page actuelle."
Le problème est que je n'ai pas de page de destination, je souhaite juste afficher le résultat de la requête. Le but est que la personne accède à une page oû il trouve des informations personnelles (et donc forcément lui-seul peut y accéder grâce à son login et mdp).

Ne serait pas correct d'afficher un echo avec les résulats souhaités ?

Posté : 27 mai 2009, 10:06
par charabia
Tu peux mettre à la place de
<a href = "#">Cliquez ici pour vous connecter</a>
ce que tu veux. Il s'agit d'un exemple.