【发布时间】:2021-09-07 06:31:27
【问题描述】:
每当我收到来自 <textarea> 或 input 的输入时,WordPress 都会清理我的输入并转义所有特殊字符。如何禁用此功能?例如,如果我有以下接受 C++ 代码(如 cout<<"hello world";)的 html 代码,WordPress 会将其转换为 cout<<\"hello world\";。
<!--HTML code-->
<form action="/action.php" method="post">
<input type="text" name="mycode" value="cout<<'hello world';">
<input type="submit" value="Submit">
</form>
.
<?php
//PHP code for action.php file
echo $_POST['mycode'];//This output will have all the special characters escaped
//I need this to give me the original text entered by the user without /s.
?>
我正在使用 WordPress 版本 5.7.2。每当我使用 \, ', " 之类的特殊字符时,它们前面都会出现\。我已经尝试过使用不同的 WordPress 主题,结果仍然相同。如果我使用stripcslashes($_POST['mycode']),则可以使用这些\。但是想知道是否有办法阻止 WordPress 从一开始就这样做。下面显示了我得到的输入和输出的图像。
【问题讨论】:
-
嗨,你的意思是在数据库中保存值?因为 $_POST['mycode'];将在不消毒的情况下给出确切的值。如果它在保存在数据库中的同时进行清理,那么最好将值保存为序列化数组格式。
-
@ShaikhAejazAhmed 感谢您的回复。我没有将这些输入值保存在数据库中。如果我使用另一个非 WordPress 网站,
$_POST['mycode'];将在不对其进行清理的情况下给出准确的值。但是,如果我在 WordPress 网站中有这个,它会自动进行清理。我尝试更改为不同的主题,但我的输入仍然被清理了。我正在使用 WordPress 版本 5.7.2 -
你能告诉我们你的action.php是什么样子的吗?您使用的是哪个版本的 PHP?也许您的虚拟主机正在强制 PHP 中的魔术引号自动转义所有内容?你能用 phpinfo() 检查魔术引号的状态吗?
-
尝试使用变量更改提交结果并替换为:
$final_mycode = str_replace('\','',$result_value_mycode); echo htmlspecialchars($final_mycode); -
@WadihM。我正在使用 PHP 版本 7.4.11。我没有在我的 phpinfor() 中看到魔术引号。我使用的托管服务器是
hostinger。 action.php 文件有echo $_POST['mycode'];行
标签: php wordpress validation