2017-10-14 86 views
1

我有一个基本的登录代码,用户输入用户名和密码,点击“提交”,然后一个MySQL查询检查数据库中用户名是否与密码相对应。PHP - 在MySQL查询中的几个变量

下面是该查询,与“伪”由用户和“mot_de_passe”作为键入的密码键入的用户名。

$reponse = $bdd->query('SELECT * FROM user_data WHERE username = '.$_POST['pseudo'].' AND password = '.$_POST['mot_de_passe'].' '); 

没有“AND ...”部分,我可以检查如果用户名存在,但是当我添加'AND ...'部分时,查询不起作用,并且'AND'的颜色与'SELECT * FROM'和'WHERE'颜色不一样

我尝试过点,简单的引号,引号,但没有任何更改。

在此先感谢。

+1

1 。不要使用普通密码,使用密码hashing.2.try来使用'prepared statements'来防止SQL INJECTION。 –

+1

使用准备好的语句,您不必担心烦人的引用问题 – Akintunde007

+0

顺便提一下,此方法的部分优点是它允许使用参数化查询。不使用它们是愚蠢的。 – Strawberry

回答

1

您必须在SQL

$reponse = $bdd->query('SELECT * FROM user_data WHERE username = "'.$_POST['pseudo'].'" AND password = "'.$_POST['mot_de_passe'].'" '); 

使用"'约串和你的代码不能防止SQL注入攻击。

请使用prepared statementbind param

+0

不,这是表和列 - 字符串需要引号。 – Qirel

+0

@ Qirel,谢谢,我再次更新。 –

0

使用下面的代码,并检查它的工作与否的天气。

$reponse = $bdd->query('SELECT * FROM user_data WHERE username = ' . 
    $_POST['pseudo'] . ' AND password = ' . $_POST['mot_de_passe']); 

也检查您的密码类型存储在数据库中,并尝试以匹配

$reponse = $bdd->query('SELECT * FROM user_data WHERE password = ' . 
    $_POST['mot_de_passe']); 

如果当时工作检查数据库键和匹配您的密码的拼写和类似的东西..