PHP,jQuery和.post():mysql_real_escape_string搞砸了

Mat*_*tis 0 php ajax jquery mysql-real-escape-string

我一直在用这个烫发我的头发.

index.php文件:

$(document).ready(function(){ 
    $(".index_login_subm").click(function(){
        uid = $("input:username").val();
        pwd = $("input:password").val();
        $.post("backend/login.php",{
            uid:uid,
            pwd:pwd
        },function(data){
            alert("Returned data: " + data);
         });
        return false;
    });
});
Run Code Online (Sandbox Code Playgroud)

login.php中:

include("../../settings.php");
echo $uid;
echo $_POST['uid'];
Run Code Online (Sandbox Code Playgroud)

没有任何回声会返回任何东西.

settings.php配置:

foreach ($_POST as $key => $value) { 
   $$key = mysql_real_escape_string($value);
}
foreach ($_GET as $key => $value) { 
   $$key = mysql_real_escape_string($value); 
}
Run Code Online (Sandbox Code Playgroud)

如果我注释settings.php-include out(当然echo $ uid不起作用),代码效果很好,所以它必须是mysql_real_escape_string所做的事情.任何人都知道我做错了什么?

index.php还包括settings.php,如果这有任何区别.

编辑:下面的帖子让我想澄清; 路径都是正确的.settings.php(和一些其他脚本)都放在根文件夹之外,以使Web用户无法访问它们.它们在脚本访问时运行良好.

Ste*_*ler 6

PHP手册中所述,mysql_real_escape_string需要与mysql_connect建立的真实数据库连接(在第二个参数中).如果不存在,则尝试通过简单地调用mysql_connect()来创建一个.如果这也不起作用,则返回false.

因此,您必须首先创建数据库连接.但在你开始这样做之前:注意简单地将每个POST和GET变量并将其吐入全局命名空间是一个非常糟糕的主意.