在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>";
}