我有下一个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:解决了在第一个比较中添加另一个子句。
答案 0 :(得分:1)
if(strcmp($userPass,$usuario['clave'])==0){
如果用户不存在且未输入密码:
$ userPass等于“”
$ usuario ['clave']等于null或“”。
因此比较条件返回true。
为了克服它,您需要添加另一个条件以确保用户存在。
if(strcmp($userPass,$usuario['clave'])==0 && $usario['id'] > 0){
更好的想法是在SQL查询中添加密码比较,并检查这样的用户是否存在。