在PHP和MySQL中登录不起作用

在PHP和MySQL中登录不起作用,php,mysql,login,Php,Mysql,Login,我正在将本教程应用于我的数据库: 当我检查用户和密码是否正确时,它不起作用 $usuario_nombre = mysql_real_escape_string($_POST['usuario_nombre']); $usuario_clave = mysql_real_escape_string($_POST['usuario_clave']); $usuario_clave = md5($usuario_clave); $sql = mysql_query("SELECT usua

我正在将本教程应用于我的数据库:

当我检查用户和密码是否正确时,它不起作用

 $usuario_nombre = mysql_real_escape_string($_POST['usuario_nombre']);
 $usuario_clave = mysql_real_escape_string($_POST['usuario_clave']);
 $usuario_clave = md5($usuario_clave);

 $sql = mysql_query("SELECT usuario, clave FROM Usuarios WHERE usuario='".$usuario_nombre."' AND clave='".$usuario_clave."'");
        if($row = mysql_fetch_array($sql)) {
            $_SESSION['usuario_nombre'] = $row["usuario_nombre"]; 
            header("Location: index.html");
        }else {
?> 

Error, <a href="indexLog.php">Reintentar</a> <?php
        }
?> 
救命啊

试试这个

<?php
$username="test";
$password="pass";

//connection
$conn=mysqli_connect("localhost","root","my password","my database")or trigger_error(mysqli_error());

//auth
$result=mysqli_query($conn,'SELECT * FROM Users WHERE username="'.$username.'" AND password="'.$password.'" ')or trigger_error(mysqli_error());

if(mysqli_num_rows($result) == 1)
{
  $_SESSION['user'] = $username;//set the session 
}
else
{
  echo "ERROR";
  die();//Murder the script 3:)
}

注意:使用bcrypt或其他类似的哈希脚本来保护密码。还可以使用mysqli_escape_字符串来防止sql注入

尝试更改此行:

$sql = mysql_query("SELECT usuario, clave FROM Usuarios WHERE usuario='".$usuario_nombre."' AND clave='".$usuario_clave."'");
if($row = mysql_fetch_array($sql)) {
用于:

您的SQL是

$sql = mysql_query("SELECT usuario, clave FROM Usuarios WHERE usuario='".$usuario_nombre."' AND clave='".$usuario_clave."'");
您试图收回$row[usuario_nombre]的回报

如果它等于,则SQL应该是:

$sql = mysql_query("SELECT usuario_nombre, usuario_clave FROM Usuarios WHERE usuario_nombre='".$usuario_nombre."' AND usuario_clave='".$usuario_clave."'");
或者,如果更改了列的名称:


应使用$row[usuario]进行恢复

错误为资源id 3

我不能用它

if(mysqli_num_rows($result) == 1)

所以,我更改了这个的代码:

$query = "SELECT `usuario`, `clave` FROM `Usuarios` WHERE `usuario`='".$usuario_nombre."' AND `clave`='".$usuario_clave."'";
        $sql = mysql_query($query) or trigger_error(mysql_error());
        $result = mysql_fetch_array($sql);
        if (count($result) > 0) { 
            $_SESSION['usuario_nombre'] = $row["usuario"]; 
            header("Location: index.html");
        }else{
            echo "Error. <a href='indexLog.php'>Reintentar</a>"; 
        }

非常感谢你的回答

不要使用md5对密码进行散列,它的unsafeuse echo mysql_错误可以查看MySQLso sql injection是否报告了任何错误?
if($row = mysql_fetch_array($sql))
$query = "SELECT `usuario`, `clave` FROM `Usuarios` WHERE `usuario`='".$usuario_nombre."' AND `clave`='".$usuario_clave."'";
        $sql = mysql_query($query) or trigger_error(mysql_error());
        $result = mysql_fetch_array($sql);
        if (count($result) > 0) { 
            $_SESSION['usuario_nombre'] = $row["usuario"]; 
            header("Location: index.html");
        }else{
            echo "Error. <a href='indexLog.php'>Reintentar</a>"; 
        }