Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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将数据输入mysql的安全方法;_Php_Mysql_Mysql Real Escape String_Html Entities_Stripslashes - Fatal编程技术网

使用“插入数据”时出现的问题;使用PHP将数据输入mysql的安全方法;

使用“插入数据”时出现的问题;使用PHP将数据输入mysql的安全方法;,php,mysql,mysql-real-escape-string,html-entities,stripslashes,Php,Mysql,Mysql Real Escape String,Html Entities,Stripslashes,我正在尝试使用表单将数据输入MySQL,并为此使用MySQL\u real\u escape\u string。不幸的是,我的输出有问题。它显示\s,或者如果我使用stripslashes,它会删除所有的斜杠 如果我使用反斜杠提交web表单\,我会得到以下输出: "web\'s forms using backslash \\" 看,我有一个双反斜杠。但是如果我使用stripslashes函数,那么它会删除所有斜杠,但也会删除输入的斜杠,并且输出是 "web's forms using bac

我正在尝试使用表单将数据输入MySQL,并为此使用
MySQL\u real\u escape\u string
。不幸的是,我的输出有问题。它显示
\
s,或者如果我使用
stripslashes
,它会删除所有的斜杠

如果我使用反斜杠提交
web表单\
,我会得到以下输出:

"web\'s forms using backslash \\"
看,我有一个双反斜杠。但是如果我使用
stripslashes
函数,那么它会删除所有斜杠,但也会删除输入的斜杠,并且输出是

"web's forms using backslash"
此处不显示反斜杠,但末尾应有一个反斜杠

问题是,如果有人在密码字段和任何其他字段中使用反斜杠,则反斜杠将被删除或显示两次。另外,请告诉我显示输出htmlentities或htmlspecialchars的最佳方法。您需要完全禁用它们,因为它们在安全性方面不好

从php.ini将其设置为
关闭
(首选):

或者,您可以在运行时禁用它们:

if (get_magic_quotes_gpc())
{
    $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
    while (list($key, $val) = each($process))
    {
        foreach ($val as $k => $v)
        {
            unset($process[$key][$k]);
            if (is_array($v))
            {
                $process[$key][stripslashes($k)] = $v;
                $process[] = &$process[$key][stripslashes($k)];
            }
            else
            {
                $process[$key][stripslashes($k)] = stripslashes($v);
            }
        }
    }
    unset($process);
}
。您需要完全禁用它们,因为它们在安全性方面不好

从php.ini将其设置为
关闭
(首选):

或者,您可以在运行时禁用它们:

if (get_magic_quotes_gpc())
{
    $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
    while (list($key, $val) = each($process))
    {
        foreach ($val as $k => $v)
        {
            unset($process[$key][$k]);
            if (is_array($v))
            {
                $process[$key][stripslashes($k)] = $v;
                $process[] = &$process[$key][stripslashes($k)];
            }
            else
            {
                $process[$key][stripslashes($k)] = stripslashes($v);
            }
        }
    }
    unset($process);
}

使用mysqli库和准备好的语句。然后,所有字符都作为数据输入,您不需要处理所有这些内容


使用mysqli库和准备好的语句。然后,所有字符都作为数据输入,您不需要处理所有这些内容

将数据输入mysql的安全方法 使用“安全”插入数据时出现的问题 使用PHP将数据输入mysql的方法“

您应该使用PDO(新改进方式)预处理语句,它比以前的语句更安全、更快(
mysql\u real\u escape\u string等)。更深入的细节

显示输出 问题是如果有人使用 密码字段中的反斜杠和任何 其他字段,则反斜杠将 被剥离或展示两次。以及 也请告诉我什么是最好的 显示输出属性或 htmlspecialchars

新的和改进的方法是使用。我特别建议您阅读PHP创建者Rasmus Ledorf的所有这些幻灯片。有很多好的幻灯片,你应该看看。

将数据输入mysql的安全方法 使用“安全”插入数据时出现的问题 使用PHP将数据输入mysql的方法“

您应该使用PDO(新改进方式)预处理语句,它比以前的语句更安全、更快(
mysql\u real\u escape\u string等)。更深入的细节

显示输出 问题是如果有人使用 密码字段中的反斜杠和任何 其他字段,则反斜杠将 被剥离或展示两次。以及 也请告诉我什么是最好的 显示输出属性或 htmlspecialchars


新的和改进的方法是使用。我特别建议您阅读PHP创建者Rasmus Ledorf的所有这些幻灯片。有很多好的幻灯片,你应该看一下。

这个答案与OP的问题没有任何关系,应该是一个评论。如果我不够清楚,请原谅。如果你一开始不需要反斜杠,你就不必担心它们会回来。你还不够后悔。再次重申:这个答案与OP的问题没有丝毫关系。在写答案之前读一下这个问题好吗?这个答案和OP的问题没有任何关系,应该是一个评论。如果我不够清楚,很抱歉。如果你一开始不需要反斜杠,你就不必担心它们会回来。你还不够后悔。再次重申:这个答案与OP的问题没有丝毫关系。在写答案之前读一下问题好吗?另一个毫无意义的答案应该是评论,因为它不会解决OP的问题,只是一个旁注。为什么你们都不想读这个问题?或者,至少是以前的答案?你可能有点对,但这真的值得投否决票吗?有时我认为人们会被否决投票……是的,确实如此。只是因为你仍然不理解这个问题,而且一点也没有回答。标题说:“使用“使用PHP将数据安全地输入到mysql的安全方式”插入数据的问题”“=>PDO是将数据安全地插入到mysql的方式,所以请解释我的回答不正确的地方??如果我给出了错误的答案,为什么不给出正确的答案,而不是投票否决我呢。我觉得我的答案很好!另一个毫无意义的答案应该是评论,因为它不会解决OP的问题,只是一个旁注。为什么你们都不想读这个问题?或者,至少是以前的答案?你可能有点对,但这真的值得投否决票吗?有时我认为人们会被否决投票……是的,确实如此。只是因为你仍然不理解这个问题,而且一点也没有回答。标题说:“使用“使用PHP将数据安全地输入到mysql的安全方式”插入数据的问题”“=>PDO是将数据安全地插入到mysql的方式,所以请解释我的回答不正确的地方??如果我给出了错误的答案,为什么不给出正确的答案,而不是投票否决我呢。我觉得我的答案很好!