[英]Issue with Mysqli Query Result
我正在尝试使用mysqli方法创建一个登录表单。我没有收到任何错误,但在两种情况下(正确或不正确的身份验证)我得到IF条件结果的第二部分! “你没有权限!。”
<?php
include_once('db.php');
$eMail = mysql_real_escape_string($_POST["eMail"]);
$passWord = mysql_real_escape_string($_POST["psword"]);
$query = "SELECT count(*) FROM users WHERE (email='$eMail' AND pass='$passWord')";
if( $query > 0 ) {
echo "You are allowed.";
}
else{
echo "You are not allowed!.";
}
$mysqli->close();
?>
我也改为if条件跟随
if( $mysqli->query > 0 ){}
我有一个名为users和两列(电子邮件,通行证)的表,其中包含用户Email和Password.Now你可以告诉我我做错了什么吗? 谢谢
出于某种原因,您使用的是mysql和mysqli函数。 这应该更新。 这也是假设您的变量$mysqli
包含有效的mysqli数据库连接:
<?php
include_once('db.php');
$eMail = mysqli_real_escape_string($mysqli,$_POST["eMail"]);
$passWord = mysqli_real_escape_string($mysqli,$_POST["psword"]);
$query = $mysqli->query("SELECT count(*) FROM users WHERE (email='$eMail' AND pass='$passWord') LIMIT 1");
if( $mysqli->num_rows($query) > 0 ) {
echo "You are allowed.";
}else{
echo "You are not allowed!.";
}
mysqli_free_result($query);
$mysqli->close();?>
不鼓励使用mysql_ *扩展来支持mysqli
和/或pdo
函数。
您的代码失败,因为没有调用mysql_query
函数,所以在这行代码中:
$query > 0
您所做的只是验证您的String是否大于0,这就是您总是得到错误结果的原因。
我已经从我的面向对象的登录方法改编为(大多数)程序方法。
通过将参数绑定到预准备语句来查看处理用户输入的不同方法:
function login($email, $password, $mysqli){
if($login_stmt = $mysqli->prepare("SELECT Pass,Salt from Users WHERE Email = ? LIMIT 1")){
$login_stmt->bind_param('s',$email);
//The line above prevents SQL Injection
$login_stmt->execute();
$login_stmt->store_result();
$rows = $login_stmt->num_rows;
$login_stmt->bind_result($db_pass,$salt); //Stores the result in the $db_pass and $salt variables
$login_stmt->fetch();
$password = hash('sha512',$password.$salt); //This is a method I'm using to encrypt using sha512 encription
if($rows==1){//The user exists
if($db_pass==$password){
//User logged in, do your stuff here
return true;
} else {
//password not correct
return false;
}
} else{
return false; //no user
}
} else {
//Prepared statement failed
return false;
}
}
这里的主要区别是准备好的语句与bind_param
一起将如何阻止代码上的SQL注入。
我希望它有所帮助。 干杯
您忘记运行查询了。 请参阅mysql_query()
。
首先连接到数据库,然后使用mysql_query($query);
执行mysql_query($query);
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
} else {
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.