Probleme Php&Mysql - PHP - Programmation
Marsh Posté le 07-08-2002 à 11:33:03
fait voir le script surtout au environs de la ligne
(+- 3 lignes ! )
Marsh Posté le 07-08-2002 à 11:42:19
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>
Marsh Posté le 07-08-2002 à 12:08:34
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.
Marsh Posté le 07-08-2002 à 12:45:57
Merci beaucoup ! Je croyais que ça fonctionnait comme les chaînes de caractères avec echo.
Marsh Posté le 07-08-2002 à 12:57:55
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 :
|
Marsh Posté le 07-08-2002 à 13:12:19
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.
Marsh Posté le 07-08-2002 à 14:47:50
Code :
|
tu devrais utiliser plutôt les double quote pour une meilleure lecture de ta requete
Code :
|
et pendant que tu y es :
je te conseille l'utilisation de la fonction PASSWORD() avec MySQL :
Code :
|
mais n'oublie pas de le crypter aussi à l'enregistrement
Marsh Posté le 07-08-2002 à 11:26:51
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