【问题标题】:mysql_real_escape_string causes problems?mysql_real_escape_string 导致问题?
【发布时间】:2011-06-08 05:24:27
【问题描述】:

好的。所以我做了一个表格。如果我在从表单中检索到的变量$usrname(是的,拼写正确)上输入mysql_real_escape_string,它将返回我的另一个变量$verify 作为false。看看:

<html>
<body>
<?php  

session_start();

include("mainmenu.php");  

$usrname = $_POST['usrname']; 
$password = sha1($_POST['password']);

$con = mysql_connect("localhost", "root", "Y0U_C@NT_H@NDLE_THE_TRUTH!");
 if(!$con){
  die("Unable to establish connection with host. We apologize for any inconvienience.");
}

mysql_select_db("users", $con) or die("Can't connect to database.");

$select = "SELECT * FROM `data` WHERE usrname = '$usrname' and
password = '$password'";
$query = mysql_query($select);
$verify = mysql_num_rows($query);

if($verify==1){
    $_SESSION["valid_user"] = $usrname;
    header("location:index.php");
}
else{
     echo "Wrong username or password. Please check that CAPS LOCK is off.";
     echo "<br/>";
     echo "<a href=\"index.php\">Back to login</a>";
} 

mysql_close($con);

?> 
</body>

如果我将mysql_real_escape_string 放入注册表或登录表单中,它会以false 的形式返回$verify。怎么了?

【问题讨论】:

  • 因为你做错了什么。不幸的是,您认为不适合向我们展示您实际执行的代码,因此无法说出那可能是什么。
  • 我看到你的巡航控制已经打开了。
  • 也是数据库列名 usrname 而不是 username ?
  • 该死,有人比我更正标题
  • @Ken:在未来,请不要大喊大叫!!!!!!!!!!!!

标签: php mysql sha1


【解决方案1】:

请确保在 PHP 设置中关闭“Magic Quotes”。如何禁用它在here进行了解释。

【讨论】:

  • 如果您的主机不允许您立即禁用它,请将魔术引号作为脚本中的第一件事去掉。
  • 他们被禁用了......仍然没有
  • 如果您的主机不允许您立即禁用它,请按照我链接的页面上的说明进行操作:) 示例 #2 说明了如何在运行时禁用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多