Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 防止代码中的SQL注入_Php_Sql Injection - Fatal编程技术网

Php 防止代码中的SQL注入

Php 防止代码中的SQL注入,php,sql-injection,Php,Sql Injection,我正在为大学作业创建一个网站。。我有一个“记住我”按钮和所有这些好东西,但是有人检查了我的代码,说可以进行SQL注入 最好的做法是什么 我只需要指导: <?php include 'functions.php'; if (loggedin()) { header("Location: index.php"); exit(); } if (isset($_POST['login'])) {

我正在为大学作业创建一个网站。。我有一个“记住我”按钮和所有这些好东西,但是有人检查了我的代码,说可以进行
SQL
注入

最好的做法是什么

我只需要指导:

<?php 
    include 'functions.php';

    if (loggedin())
    {
        header("Location: index.php");
        exit();
    }

    if (isset($_POST['login']))
    {
        $username = $_POST['username']; 
        $password = $_POST['password'];

        if (isset($_POST['rememberme']))
        {
            $rememberme = $_POST['rememberme'];
        }

        if ($username && $password)
        {
            $login = mysql_query("SELECT * FROM users WHERE username='$username'");

            while($row = mysql_fetch_assoc($login))
            {
                $db_password = $row['password'];

                if($password == $db_password)
                {
                    $loginok = TRUE;
                }
                else
                {
                    $loginok = FALSE;
                }

                if ($loginok == TRUE)
                {   
                    if($rememberme == "on")
                    {
                        setcookie("username", $username, time() + 7200);
                    }
                    else
                    {
                        if ($rememberme == "")
                        {
                            $_SESSION['username'] = $username;
                        }
                    }

                    header("Location: index.php"); 
                    exit();
                }

有一个名为addslashes()的php方法,它会自动将转义序列添加到任何字符串中,该字符串应该处理较小的SQL注入尝试

不要使用
mysql\uuu
扩展-使用
mysqli
或PDO并使用准备好的语句。这是让你在谷歌上搜索的简短答案——也看看这个问题/答案——从这里开始:简短的答案是,将用户输入直接连接到SQL查询中会将该输入视为可执行代码,因此存在SQL注入漏洞。永远不要将用户输入视为可执行代码。仅将其视为数据值。您可以找到PDO_MYSQL