-3

我最近添加了一个使用 mysql/php 的新闻系统,它运行良好,但是在添加 html 时出现了一些错误。

例如,如果我添加一个 youtube 视频,它将添加 / 或 \

我要对下面的代码进行哪些更改以将 html 存储到数据库中?

这是 HTML 最终的样子:

4

3 回答 3

2

这可能只不过是一些未剥离的斜线。看来您在保存数据之前正在转义斜杠(干得好!),但是当您去显示数据时,您似乎没有删除这些斜杠。回显时尝试以下操作:

echo stripslashes( $myrow['title'] );
于 2012-04-28T05:49:23.390 回答
1

您很可能启用了魔术引号。如果是这样,您应该检查这一点并相应地去除斜线

function magic_quotes_strip($value){
    if(get_magic_quotes_gpc()){
        if(is_array($value)){
            return array_map('stripslashes',$value);
        }else{
            return stripslashes($value);
        }
    }else{
        return $value;
    }
}
//Strip all slashes from post array before handling
$_POST = magic_quotes_strip($_POST);

然后在输入之前做你正常的mysql转义,不用担心双重转义:

$title = mysql_escape_string($_POST['title']);

笔记:

PHP_SELF是一个 XSS 漏洞,你应该htmlentites或删除它,所以它只是action=""

$_SESSION[usr_name]usr_name应该将其用作常量$_SESSION['usr_name']

于 2012-04-28T05:54:16.393 回答
0

您的代码中有一个地方会无缘无故地添加过多的斜杠。
你必须找到这个地方并删除过度的削减。

这可能是一个臭名昭著的magic_quotes_gpcini 设置。您必须关闭它,或者,如果不能,请使用上面链接中的代码在配置文件的最顶部去除这些无用的斜线。

这可能是一些愚蠢无用的“终极清理功能”。您必须找到它并从中删除削减。

这可能在其他地方,比如在generate_wysiwyg()函数内部或任何地方。

请记住:只做 stripslashes() 只是一个丑陋的拐杖,只在一个地方更正您的数据,而在其他地方却被宠坏了。

于 2012-04-28T06:30:00.773 回答