[英]Why $_POST is removing HTML tags from string?
我使用的是Fat Free Framework(如果很重要)在PHP 5.6上,并且遇到了一个奇怪的问题。 我将表单数据发送到服务器,如下所示:
function submitForm(form)
{
var fd = new FormData();
var file_data = isImageIncluded ? $('input[type="file"]')[0].files : [];
for (var i = 0; i < file_data.length; i++) {
fd.append("file_" + i, file_data[i]);
}
var other_data = $(form).serializeArray();
$.each(other_data, function(key, input) {
fd.append(input.name, input.value);
});
sendData(url, fd, form);
}
function sendData(url, data, form)
{
$.ajax({
type: 'POST',
url: url,
data: data,
contentType: false,
processData: false,
success: function(data) {
console.log(data);
}
}
});
}
因此,当我调试上面的代码时,我看到从wysiwyg发送的数据是带有<b></b>
类的html标签的。
问题出在PHP方面。 方法如下:
public function editRelease()
{
var_dump($_POST['description']);exit;
}
并且无法获取描述以在字符串中显示html标签。 有人对发生的事情有想法吗?
这是我的Chrome标头的屏幕截图。 我标记了我要指的对象。 如图所示,html标记将发送到服务器,所以我不确定为什么它没有显示在$ _POST数组中。
有人看过吗?
对于那些想知道的人,我发现在我的Fat Fat Framework版本中,称为F3 Boilerplate ,有一段代码将标签剥离。 在其app.php中,我发现
// clean ALL incoming user input by default
$request = array();
foreach (array('GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'COOKIE') as $var) {
$input = $f3->get($var);
if (is_array($input) && count($input)) {
$cleaned = array();
foreach ($input as $k => $v) {
$k = strtolower(trim($f3->clean($k)));
$v = $f3->clean($v);
if (empty($v)) {
continue;
}
$cleaned[$k] = $v;
$request[$k] = $v;
}
ksort($cleaned);
$f3->set($var, $cleaned);
}
}
它将使用$f3->clean()
从所有传入输入中删除标签,因此我不得不按照文档http://fatfreeframework.com/base#clean中的说明将其修改为白名单标签。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.