为什么这个PHP代码返回" true"?

时间:2017-01-31 12:11:32

标签: php

我有下一个PHP代码,用于验证用户是否存在且密码是否正常。问题是,当用户不存在时,如果您没有传递任何密码,代码将返回" true"。

$apodo= $_GET['apodo']; //Login por mail
$userPass= $_GET['clave'];
//Iniciamos la solicitud de información
$server = "localhost";
$conn = mysqli_connect($server, "root", "", "_v2");
if (!$conn) {
    echo "Error: No se pudo conectar a MySQL." . PHP_EOL;
    echo "errno de depuración: " . mysqli_connect_errno() . PHP_EOL;
    echo "error de depuración: " . mysqli_connect_error() . PHP_EOL;
    exit;
}
$query = "SELECT * FROM kiroldb_v2.Usuario WHERE apodo='$apodo'";
$result = mysqli_query($conn, $query);
$usuario = mysqli_fetch_array($result);
    if(strcmp($userPass,$usuario['clave'])==0){
    echo "true";
    }else{
            echo "false";
    }
?>

问题出在哪里?

编辑1:解决了在第一个比较中添加另一个子句。

1 个答案:

答案 0 :(得分:1)

if(strcmp($userPass,$usuario['clave'])==0){

如果用户不存在且未输入密码:

  

$ userPass等于“”

     

$ usuario ['clave']等于null或“”。

因此比较条件返回true。

为了克服它,您需要添加另一个条件以确保用户存在。

if(strcmp($userPass,$usuario['clave'])==0 && $usario['id'] > 0){

更好的想法是在SQL查询中添加密码比较,并检查这样的用户是否存在。