簡體   English   中英

為什么$ _POST從字符串中刪除HTML標簽?

[英]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數組中。

屏幕截圖

編輯2

這是我得到的響應的屏幕截圖,與上面標題的屏幕截圖相對應: 在此處輸入圖片說明

有人看過嗎?

對於那些想知道的人,我發現在我的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM