首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql_real_escape_string -登录脚本

问mysql_real_escape_string -登录脚本
EN

Stack Overflow用户
提问于 2012-11-05 03:47:16
回答 2查看 1.8K关注 0票数 3

我目前正在升级一个朋友网站的代码,并遇到了一个登录脚本的问题。我正在尝试使用mysql_real_escape_string()来阻止SQL注入。mysql_escape_string()运行得很好,但mysql_real_escape_string()不能。这是我得到的:

代码语言:javascript
复制
if (isset($_POST['submit']))
{
    $username = mysql_real_escape_string($_POST['username']); 
    $password = mysql_real_escape_string($_POST['password']);

    $db_link = db_connect("project");
    $query = "SELECT * FROM user WHERE username = '$username' AND password = password('$password')";
    $result = mysql_query($query) or die (mysql_error());
    $numrows = mysql_num_rows($result);

    if($numrows == 1)
    {
        RedirectToURL("home.php");
    }
    else
    {
        login_page("Invalid login! Try again");
    }   
}
else
{
    login_page("");
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-05 03:48:37

要使用mysql_real_escape_string,您必须登录到数据库。如果您未登录,请使用mysql_escape_string。

票数 6
EN

Stack Overflow用户

发布于 2012-11-05 03:55:10

正如@MichaelBerkowski在你的评论中所说的那样,将mysql_real_escape_string()调用移到连接命令之后:

代码语言:javascript
复制
if (isset($_POST['submit']))
{

    $db_link = db_connect("project");

    $username = mysql_real_escape_string($_POST['username']); 
    $password = mysql_real_escape_string($_POST['password']);

    $query = "SELECT * FROM user WHERE username = '$username' AND password = password('$password')";
    $result = mysql_query($query) or die (mysql_error());
    $numrows = mysql_num_rows($result);

    if($numrows == 1)
    {
        RedirectToURL("home.php");
    }
    else
    {
        login_page("Invalid login! Try again");
    }   
}
else
{
    login_page("");
}

如上所述,原因是that mysql_real_escape_string()依赖于您的mysql连接才能工作

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13222202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档