如何在不自动转义的情况下保存JavaScript和HTML选项?

时间:2010-05-28 19:48:54

标签: php wordpress

在那里我以为我很了解Wordpress。现在看来update_option()会自动转义代码。如果我想在选项中保存一些Javascript或HTML代码,则此行为会导致代码无法使用。

我拒绝对返回的值执行str_replace以过滤掉每个反斜杠。必须有更好的方法。

这是用于输入一些代码的文本框的PHP:

$option = unserialize(get_option('option'));

<textarea name="option[box]"><?php echo $option['box']; ?></textarea>

这是在提交表格(实质上)后发生的事情:

update_option('option', serialize($_POST));

有什么想法吗?

编辑:我现在通过使用PHP的stripslashes()来完成工作,其中脚本必须被渲染,而htmlentities(stripslashes())在文本框中显示存储的代码。虽然这样做,但我仍然想知道是否有更好的解决方案。

2 个答案:

答案 0 :(得分:2)

  

现在看来update_option()会自动转义代码。

它只清理数据库条目的值。你会发现真正的麻烦制造者在wp-settings.php的第750行和WP函数add_magic_quotes()附近。

是的,你读得对,添加魔术引号

出于某种原因,WordPress决定强制使用魔术引号,因此在编写插件等时,你总是需要在GET和POST上使用striplashes。

答案 1 :(得分:2)

这是真的@TheDeadMedic stripslashes必须像;

一样使用
echo stripslashes(get_option( 'option' ));