Php 预计起飞时间!在某些情况下,您希望直接显示这些数据,因此面临一个问题:如何显示sql转义字符串而不从DB获取它? 答案是: 使用条纹斜杠(不是条纹斜杠!!)

Php 预计起飞时间!在某些情况下,您希望直接显示这些数据,因此面临一个问题:如何显示sql转义字符串而不从DB获取它? 答案是: 使用条纹斜杠(不是条纹斜杠!!),php,sql-injection,html-encode,mysql-real-escape-string,Php,Sql Injection,Html Encode,Mysql Real Escape String,在HTML页面上显示时,使用以下功能删除斜杠: 斜杠() 例如。 $html=stripslashes($html); 或 $html=stripslashes($row[“fieldname”]) 我建议使用预先准备好的语句(例如)而不是mysql\u real\u escape\u string。而且htmlspecialchars并不总是正确的选择。有时白名单是一个更好的选择。注意!如果启用了“magic_quotes”,即使使用PDO,在将字符串放入数据库之前也需要使用“stripsla

在HTML页面上显示时,使用以下功能删除斜杠:

斜杠()

例如。 $html=stripslashes($html); 或
$html=stripslashes($row[“fieldname”])

我建议使用预先准备好的语句(例如)而不是
mysql\u real\u escape\u string
。而且
htmlspecialchars
并不总是正确的选择。有时白名单是一个更好的选择。注意!如果启用了“magic_quotes”,即使使用PDO,在将字符串放入数据库之前也需要使用“stripslashes()”,以避免双斜杠。但现代系统不应该启用magic_quotes。那项功能已经被弃用多年了。你错了。他不需要剥去割伤。我们需要正确地添加它。一定要治好死亡,而不是症状。他确实需要去掉伤口,因为他先在伤口上用了逃生绳。他对它进行了编码,现在他需要对它进行解码以消除输出中的斜杠。因此,\出现在“.之前。你不知道这个东西是如何工作的。所以最好禁止你自己回答,直到你学会一些。不需要剥离。自己试试。最后,记住按照正确的顺序编码和解码。如果你运行mysql\u real\u escape\u字符串(htmlentities($str)),无需解码操作。如图所示。如果您不需要实体,请不要对它们进行编码。如果您需要,为什么要解码?我的数据库类在每次插入之前都会运行real_escape_string。为了去掉引号前的斜杠,我必须运行stripslashes,否则斜杠将被转义。我完全知道它是如何工作的-我写了这篇文章一直都是东西。他试图找回他的html,但是有斜杠。除了stripslashes,你打算如何在不过度复杂的情况下完成这项工作?他需要确保他首先找回了实体!问题是他先运行strip,他应该先运行decode。$query=“INSERT INTO table SET html=”$html"; 不是标准的SQL,最好使用INSERT INTO table(html)值('content');这适用于所有数据库,不仅仅是MySQL。@Frank Heikens,我也在使用MySQL。我使用了大量mysql特有的功能。去告诉我不要使用PHP,因为它不是到处都支持的。真是胡说八道!正如Guss所指出的,转义是保护数据库免受SQL注入的需要。感谢你救了我的命,我使用了prepared语句和mysql\u real\u escape\u字符串,这导致了双重转义:-)你确定他想转义这个表单吗?A我很怀疑。如果有人使用HTML格式,他们通常希望它工作,而不是作为可见标记。如果用户可以控制$string,则这是一个XSS漏洞。
mysql_real_escape_string($string);
<span class="\&quot;className\&quot;">
<p class="\&quot;pClass\&quot;" id="\&quot;pId\&quot;"></p>
</span>
html_entity_decode(stripslashes($string));
<span class="\&quot;className\&quot;">
<p class="\&quot;pClass\&quot;" id="\&quot;pId\&quot;"></p>
</span>
<span class="className">
<p class="pClass" id="pId"></p>
</span>
function mysql_unreal_escape_string($string) {
    $characters = array('x00', 'n', 'r', '\\', '\'', '"','x1a');
    $o_chars = array("\x00", "\n", "\r", "\\", "'", "\"", "\x1a");
    for ($i = 0; $i < strlen($string); $i++) {
        if (substr($string, $i, 1) == '\\') {
            foreach ($characters as $index => $char) {
                if ($i <= strlen($string) - strlen($char) && substr($string, $i + 1, strlen($char)) == $char) {
                    $string = substr_replace($string, $o_chars[$index], $i, strlen($char) + 1);
                    break;
                }
            }
        }
    }
    return $string;
}