带有mysqli\u real\u escape\u字符串的PHP无法按预期工作
我试图创建一个登录页面,但我有一个问题,数据没有被发送。有人能帮我吗带有mysqli\u real\u escape\u字符串的PHP无法按预期工作,php,Php,我试图创建一个登录页面,但我有一个问题,数据没有被发送。有人能帮我吗 $myusername = stripslashes($username); $mypassword = stripslashes($password); $myusername = mysqli_real_escape_string($myusername); $mypassword = mysqli_real_escape_string($mypassword); $sql="SELE
$myusername = stripslashes($username);
$mypassword = stripslashes($password);
$myusername = mysqli_real_escape_string($myusername);
$mypassword = mysqli_real_escape_string($mypassword);
$sql="SELECT * FROM login_admin WHERE user_name='$myusername' and user_pass=SHA1('$mypassword')";
$result=mysql_query($dbC, $sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "admin.php"
session_register("admin");
session_register("password");
$_SESSION['name']= $myusername;
header("location:admin.php");
}
else {
$msg = "$username $password $myusername $mypassword $sql $result Wrong Username or Password. Please retry";
header("location:login.php?msg=$msg");
}
我得到的结果是:
test test123从登录管理中选择*,其中user\u name=\'\'和user\u pass=SHA1(\'\')的用户名或密码错误。请重试您必须提供$link标识符作为中的第一个参数,以便这些行看起来更像
$myusername = mysqli_real_escape_string($dbconn,$myusername);
$mypassword = mysqli_real_escape_string($dbconn,$mypassword);
其中$dbconn是从mysqli\u connect
返回的链接。如果要切换到mysqli_*函数集,则应该使用mysql_query和mysql_num_u行的mysqli_uu等价物
我强烈建议切换到mysqli(或PDO)而不是使用(现在是遗留的)mysql函数。PHP.net提供了原因。考虑使用我们喜欢调用的(美妙的)东西。它们之所以伟大,是因为它们将数据视为数据,而不是要执行的语句。这意味着不需要转义,因为您的输入不会被误解 要在您的案例中实现此功能,请执行以下操作: 我还写了一篇文章,将粘贴复制到登录系统中几乎可以实现任何功能的东西中(请参阅) 另外,为了回答您真正的问题,在没有数据库连接的情况下,在mysqli中没有这样的转义方法。将数据库添加到函数的开头:
mysqli_real_escape_string($db, $string);
mysqli
也准备了语句,我建议你使用它们。我也是,@Jack。转义可能会出现很多问题,因此最简单的方法就是不需要转义,让SQL引擎更智能(即在api中使用Prepare
语句,而不是Query
)
mysqli_real_escape_string($db, $string);