【发布时间】:2013-12-08 21:11:34
【问题描述】:
我在 PHP 中使用 mysqli 并尝试从数据库中获取数据以登录系统。当我使用 phpmyadmin 执行查询时,我得到了完美的结果。但是当我尝试从 php 脚本中获取它时,我遇到了问题。我的php脚本在下面
if(isset($login)){
$email = @$db->real_escape_string(htmlentities($_POST['loginid']));
$username = @$db->real_escape_string(htmlentities($_POST['loginid']));
$pass1 = @$db->real_escape_string(htmlentities($_POST['loginpass']));
$blah = new Encryption();
$pass = $blah->encode($pass1);
if($db->query("SELECT `uid` FROM `users` WHERE BINARY `uname` = '$username' AND `pass` = '$pass'")){
$errors[] = 'Logged in by username';
}
else if($db->query("SELECT `uid` FROM `users` WHERE `email` = '$username' AND `pass` = '$pass'")){
$errors[] = 'Logged in by email';
}
}
现在问题是我的用户名是“abc”,电子邮件是“abc@abc.com”,密码是“qazwsx”加密。第二个用户名是'xyz',电子邮件是'xyz@xyz.com',密码是'abcdef',但它没有检查uname并同时通过或电子邮件并同时通过。如果我输入 '1' 或任何带有 'qazwsx' 密码的东西,它会告诉我你是 'logged in by username' 意味着它只检查密码。
为了查看结果,我使用了这些代码,
if($errors){
echo '<ul>';
foreach ($errors as $error){
echo '<li>'.$error.'</li>';
}
echo '</ul>';
}
else if ($loginform){
echo $loginform;
}
我不知道该怎么办。请帮帮我。
【问题讨论】:
标签: php mysql database login mysqli