我最近添加了一个使用myysql / php的新闻系统,它运行得很好,但是在添加html时会出现一些错误。
例如,如果我添加YouTube视频,则会添加/或\
我在下面的代码中如何更改以将html存储到数据库中?
这就是HTML最终看起来像:
答案 0 :(得分:2)
这可能只是一些未经剥离的斜杠。在保存数据之前,您似乎正在转义斜杠(干得好!),但是当您去显示数据时,您似乎没有删除这些斜杠。回音时尝试以下内容:
echo stripslashes( $myrow['title'] );
答案 1 :(得分:1)
您很可能已启用magic quotes。 如果是这样,您应该检查这一点,并相应地stripslashes。
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']
答案 2 :(得分:0)
您的代码中有一些地方无缘无故地添加了过多的斜杠 你必须找到这个地方,并删除过多的削减。
这可能是一个臭名昭着的magic_quotes_gpc
ini设置。您必须关闭它,或者,如果不能,请使用上面链接中的代码在配置文件的最顶部删除这些无用的斜杠。
这可能是一些愚蠢无用的“终极清理功能”。你必须找到它并删除它。
这可能在其他地方,例如generate_wysiwyg()
函数内部或任何内容。
记住:只做striplashes()只是一个丑陋的拐杖,只在一个地方纠正你的数据,让它在其他地方被破坏。