2016-03-03 165 views
-1

解决方案:“在SQL查询出错的地方结束”,并且还在SQL查询帮助之前声明$ user和$ password 谢谢大家。如何使用PHP检查用户是否存在于数据库中

我竭力要弄清楚为什么这是行不通的。对我来说,完全合理。

而且,我知道我的代码可以使用旧技术,并在注射的风险,这仅仅是一个概念证明

这里是我的代码:

<?php 
$db = mysql_connect("localhost", "root", "root"); 
if (!$db) { 
die("Database connect failed: " . mysql_error()); 
} 

$db_select = mysql_select_db("test", $db); 
if (!$db_select) { 
die("Database selection failed: " . mysql_error()); 
} 

$username = $_POST['username']; 

$result=mysql_query("SELECT * FROM Dbusers (username,pass) WHERE username,pass ='$username','$pass'"); 
if(mysql_num_rows($result) == 1) { 

     header ("location: UniHelpindex.php"); 
} 
else 
{ 
    echo ("Login Details Wrong"); 
} 

?> 

任何事情,我的帮助让我知道。

+0

会发生什么?是否有错误消息? –

+0

它通过我的if语句和回声登录详细信息是错误的。 –

+0

添加语句'ini_set('display_errors','1'); ini_set('html_errors','1'); error_reporting(E_ALL);'到你的代码的开头,再次运行它,并检查服务器的'error.log'文件 –

回答

3

这是一个语法错误:

WHERE username,pass ='$username','$pass' 

您的意思是:

WHERE username = '$username' AND pass = '$pass' 

而且,当你有没有定义$pass?如果你没有定义它,那么SQL查询可能只是查找可能不匹配任何记录的空字符串(我希望)。


当查询失败时,系统不一定会告诉你。 (尽管在这种情况下mysql_num_rows($result)很有可能是发生错误。打开错误报告,检查您的日志等)看看mysql_error()函数以随时检查错误mysql_query()返回false(它在事件中执行的错误)。


而且,是的,在这里插入标准的免责声明,您使用远远过时的库和敞开 SQL注入。

+0

如果你按照@David的步骤,并使这个 到$ db = mysql_query(“SELECT * FROM Dbusers(username,pass)WHERE username,pass ='$ username','$ pass'”);' 成为这个: '$ result = mysql_query(“SELECT * FROM Dbusers WHERE username ='$ username'AND pass ='$ pass'”);' 确定你的代码应该可以工作 –

+0

是的,我做了改变,它似乎正在检查,但它好像忽略了我的第一条IF语句被重定向到其他页面位置。 –

+0

@JamesTaylor:具体*如何失败?你得到一个完全空白的回应? “else”块中的消息?错误? “就好像它忽视了我的第一次IF声明”并不真正描述问题。 – David

0

我不确定,但我想你的SQL命令中的$ pass变量是未定义的。

-1

使用像

SELECT pass from Dbusers WHERE username = '$username' LIMIT 1

这是非常不安全的,虽然,请使用这样的查询前清理数据的查询。

+0

我很确定代码的意图是验证用户的登录凭证。这种方法甚至不会验证密码,它只会让任何知道用户名的人登录。所以,是的,这就像你说的“***非常不安全***”。那么,为什么推荐它? – David

+0

使用从查询中收到的数据比较密码。 – SunMan

0

不使用mysql_它折旧。改用mysqli_

$db=mysqli_connect('hostname','usrname','password','dbname')or die(<h2>some html code for showing the error</h2>); 
$query="SELECT * FROM Dbusers WHERE username='$username' AND password='$password'"; 
$result=mysqli_query($db,$query); 
if($mysqli_num_rows !=0){ 
//user was found stuff here 
}else{ 
//user not found stuff here 
} 
**I hope it helped** 
0

SOLUTION:。在结束“的SQL查询是在错误的地点后,也宣告了$ USER和$密码之前的SQL查询帮助以及感谢所有

相关问题