Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1934 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Probleme Php&Mysql

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme Php&Mysql

n°191353
ar2k
Posté le 07-08-2002 à 11:26:51  profilanswer
 

Bonjour à tous,
 
J'ai quelques questions de débutant à propos de PHP et MySQL. J'essaye de faire un système d'authentification sur une page Web avec une base MySQL derrière. Elle contient plusieurs tables dont une qui se charge de stocker les logins et passwords des utilisateurs.
 
Pour commencer, je récupère les données du formulaire d?authentification avec la variable $_POST et je les affecte  à $login et $passwd. Je me connecte au serveur MySQL et je sélectionne la base concernée. Ensuite, je fais la requête ci-dessous :
 
$result = mysql_query('SELECT login, passwd FROM compte WHERE login = \'', $login, '\' AND passwd = \'', $passwd, '\';';) or die("Echec durant la requête à la base MySQL" );
 
A l?aide de la fonction mysql_num_row(), je peux  savoir le nombre de ligne retourné par la requête. Si le nombre de ligne est 0, l?authentification est incorrecte. Si c?est 1, l?authentification est un succès. Sinon c?est qu?il y a des doublons, ce qui n?est, en théorie , pas possible comme le champ login est une clé primaire.
 
Le problème c?est que MySQL répond avec l?erreur :
 
Warning: Wrong parameter count for mysql_query() in /Library/WebServer/Documents/checkid.php on line 11
Echec durant la requête à la base MySQL
 
J?ai beau essayer de chercher à résoudre le problème mais je n?ai rien trouvé de concret. Si une âme charitable pourrai m?aider, ce serai vraiment (très) sympa.
 
Mise à par cela, que pensez-vous de ce système d?authentification rudimentaire? Est-ce qu?il y a une meilleure méthode pour l?implémenter ?
 
Merci d?avance.
 
Ma configuration :
 
Apache 1.3.26
PHP 4.2.2 (en DSO)
MySQL 3.23.51

mood
Publicité
Posté le 07-08-2002 à 11:26:51  profilanswer
 

n°191366
jolly
Posté le 07-08-2002 à 11:33:03  profilanswer
 

fait voir le script surtout au environs de la ligne  
(+- 3 lignes ! )

n°191377
ar2k
Posté le 07-08-2002 à 11:42:19  profilanswer
 

voili, je le met en entier, pour les autres qui vont lire, c'est pas top secret  :) j?ai juste « aéré » le tout pour une meilleure lecture, le numéro de ligne ne va plus jouer. Si jammais, la ligne 11 se trouve être la requête MySQL (mysql_query).
 
<html>
<body>
 
<?php
 
include 'config.php';
 
if (isset($_POST[LOGIN_INPUT_NAME]) &&
isset($_POST[PASSWORD_INPUT_NAME])) {
 
$login = $_POST[LOGIN_INPUT_NAME];
$passwd = $_POST[PASSWORD_INPUT_NAME];
 
$mid =  @ mysql_connect(SQL_HOTE, SQL_LOGIN, SQL_PASSWORD) or die("Echec durant la connexion au serveur MySQL" );
 
mysql_select_db(DATABASE_NAME) or
die("Echec durant la sélection de la base MySQL" );
 
$result = mysql_query('SELECT login, passwd FROM compte WHERE login = \'', $login, '\' AND passwd = \'', $passwd, '\';';) or
die("Echec durant la requête à la base MySQL" );
 
if (mysql_num_rows($result)) echo "Authentifcation correcte!";
else echo "Authentifcation incorrecte!";
 
mysql_close();
 
} else {
 
echo "Entrée(s) incorrecte(s)!\n";
 
}
 
?>
 
</body>
</html>


Message édité par ar2k le 07-08-2002 à 11:53:54
n°191401
ethernal
Chercheur de vérité...
Posté le 07-08-2002 à 12:08:34  profilanswer
 

ta query est fausse :
$result = mysql_query(
   'SELECT login, passwd FROM compte WHERE login = \'' . $login . '\' AND passwd = \'' . $passwd . '\';';)  
 
ce sont les points qui concatènent, pas les virgules.


---------------
...oups kernel error...
n°191421
ar2k
Posté le 07-08-2002 à 12:45:57  profilanswer
 

Merci beaucoup ! Je croyais que ça fonctionnait comme les chaînes de caractères avec echo.   :pt1cable:

n°191430
Ez4Me2KU
Posté le 07-08-2002 à 12:57:55  profilanswer
 

Le problème ne vient pas de là : la fction mysql_query requiert 2 paramètres : la requètes et l'identification de connexion.
 
Exemple :  
 

Code :
  1. $dbi=mysql_connect($dbbase,$dbuser,$dbpass);
  2. $q=mysql_query("SELECT machin FROM truc WHERE chose='5'",$dbi);


Message édité par Ez4Me2KU le 07-08-2002 à 12:58:21

---------------
Toute l'actu des jeux vidéos sur http://www.ajeux.fr
n°191434
ar2k
Posté le 07-08-2002 à 13:12:19  profilanswer
 

La source avec la correction fonctionne impec.
 
Si on omet de spécifier l'identification de connexion, il prend la dernière connexion effectuée.


Message édité par ar2k le 07-08-2002 à 13:13:02
n°191472
jolly
Posté le 07-08-2002 à 14:32:27  profilanswer
 

ben voila ....

n°191485
mahu le ma​lin
Posté le 07-08-2002 à 14:47:50  profilanswer
 

Code :
  1. $result = mysql_query('SELECT login, passwd FROM compte WHERE login = \'', $login, '\' AND passwd = \'', $passwd, '\';') or die("Echec durant la requête à la base MySQL" );


 
tu devrais utiliser plutôt les double quote pour une meilleure lecture de ta requete
 

Code :
  1. $qry = "SELECT login, passwd FROM compte WHERE login = '$login' AND passwd = '$passwd'";
  2. $result = mysql_query($qry) or die("Echec durant la requête à la base MySQL" );


 
et pendant que tu y es :
je te conseille l'utilisation de la fonction PASSWORD() avec MySQL :  

Code :
  1. $qry = "SELECT login, passwd FROM compte WHERE login = '$login' AND passwd = PASSWORD('$passwd')";


 
mais n'oublie pas de le crypter aussi à l'enregistrement  :D  
 
 :hello:  


---------------
JeuxVideo.Records.Mame

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Probleme Php&Mysql

 

Sujets relatifs
Problème requête MySql avec un ";" dedans (un peu de PHP aussi)[PHP - MySQL] Problème connexion BDD MySQL (résolu)
Probleme MySQL & PHPProbleme d'affichage PHP Mysql
[PHP/MySQL] probleme pour recuperer des donnees d'une base MySQL[PHP-MySQL] : Problème de connexion à la base de données sous Linux
[PHP/MySQL]Problème a propos de l'auto increment ....[newbie is back] Probleme de PHP avec Free (Unable to connect to mySql
Un problème en PHP/MySQL[PHP] [MySQL] Problème d'utilisateurs....
Plus de sujets relatifs à : Probleme Php&Mysql


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR