我自以为我很了解 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));
有任何想法吗?
Edit:我现在通过使用 PHP 的 stripslashes() 来使其工作,其中必须呈现脚本,并在文本框中使用 htmlentities(stripslashes()) 来显示存储的代码。虽然这可以完成工作,但我仍然想知道是否有更好的解决方案。
现在看来 update_option() 自动转义代码。
它仅清理数据库条目的值。你会发现真正的麻烦制造者在第 750 行附近wp-settings.php
,以及 WP 函数add_magic_quotes()
.
是的,你没看错,添加魔法引号!
由于某种原因,WordPress 决定强制执行魔术引号,因此在编写插件等时,您始终需要在 GET 和 POST 上去掉斜杠。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)