[英]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.