2011-08-08 3 views
-1

Je ne sais pas comment vérifier les correspondances sur ma base de données lorsque les utilisateurs se connectent et retournent true si les deux passent et que l'utilisateur correspond à une entrée. Les variables correspondant au nom d'utilisateur et au mot de passe sont les suivantes: $user et $hash. Et la table où je dois rechercher des correspondances est la table Users et les colonnes: User et Password.Vérifier si l'utilisateur et le mot de passe correspondent à la base de données

Comment serait la requête? Merci

+2

Google autour des formulaires de connexion PHP, vous trouverez un * lot * d'informations à ce sujet. – Vache

Répondre

1

C'est la requête dont vous avez besoin:

SELECT * FROM Users WHERE User = '$user' AND Password = '$hash' LIMIT 1; 

Si cela retourne un résultat (vous pouvez vérifier avec mysql_num_rows()), la connexion est valide. Si ce n'est pas le cas, c'est invalide. N'oubliez pas d'échapper $user avec mysql_real_escape_string() ou une autre fonction d'échappement avant de l'utiliser dans la requête de base de données.

3

La requête ressemblerait à ceci:

SELECT * FROM Users WHERE User='$user' AND Password='$hash' LIMIT 1; 

vérifier Ensuite, si le nombre de lignes == 1. Dans ce cas, il semble qu'il y ait une connexion valide. Rappelez-vous ce que vous essayez de faire: vous essayez de faire correspondre deux choses dans la base de données. Le SQL "AND" s'assure que les deux conditions sont vraies.

Je voudrais vérifier l'API sur http://mysql.com/ pour plus d'informations.

+0

Vous devez également envisager de protéger votre entrée, l'injection SQL est trop facile surtout sur les scripts de connexion. – diagonalbatman

+0

Absolument. Je recommande d'écrire une méthode 'sanitize' (vous pouvez le faire avec regex, etc.) avant d'envoyer votre entrée directement dans la requête. – RageD

+0

Comme l'explication. J'allais l'ajouter au mien aussi, mais tu m'as battu d'une seconde en affichant haha. – Kyle

1
SELECT * FROM Users where User='$user' AND Password='$hash' LIMIT 1 
Questions connexes