首頁>Program>source

阅讀答案在這裏,有什麼區別?

是否可以使用html提交原始POST?

最新回復
  • 11天前
    1 #

    我们可以將表單提交分為三種情况:

    內容型別為 application/x-www-form-urlencoded的提交

    內容型別為 multipart/form-data的提交

    其他提交內容。

    在情况1和3中, $HTTP_RAW_POST_DATA 包含原始帖子資料(除非该選項為 always_populate_raw_post_data 設置為 false ,在這種情况下 $HTTP_RAW_POST_DATA 在情况1)中為空,即与客戶端(通常是瀏覽器)發送的資料完全相同的資料.如果是1,則資料的格式為

    key1=value1&key2=value2&key3[]=value3.1&key3[]=value3.2
    

    PHP自動對此进行解析,以便 $_POST 變成:

    $_POST = array(
        "key1" => "value1",
        "key2" => "value2",
        "key3" => array("value3.1", "value3.2");
    )
    

    原始資料的內容也可以通過 php://input訪問 ,即使情况1,当 always_populate_raw_post_data 設置為 false .特別是 file_get_contents("php://input") 给出相同的資料 已经或將会拥有。

    在情况3中,POST資料是任意的, $HTTP_RAW_POST_DATA 將是一个空陣列, $_POST 將始终填充。

    案例2是一个特殊的案例.在這種情况下,PHP將解析資料並 $HTTP_RAW_POST_DATA 將获得不是上載檔案但 $_POST的欄位的內容 和 php://input 將不可用。

  • 11天前
    2 #

    $HTTP_RAW_POST_DATA 將会包含以下內容:

    $HTTP_RAW_POST_DATA
    

    PHP將其拆分為您,然後將其推到 beans=cheese&spam=eggs&one=two中 陣列.天真地,它会執行以下操作:

    $_POST
    

    使用可嵌入HTML的JavaScript,您可以使用AJAX發佈任何您類似的內容.像這樣:

    $parts = explode('&', $HTTP_RAW_POST_DATA);
    foreach ( $parts as $part ) {
        list($key, $value) = explode('=', $part, 2);
        $_POST[$key] = $value;
    }
    

    將允许您將任意內容發佈到web服務器。

  • 11天前
    3 #

    $ _ POST是傳入的POST引數的關聯陣列. PHP从原始HTTP帖子中為您建立了此代碼.如果您想自己處理原始POST資料(可能在POST中發送了一些二进製資料),請使用$ HTTP_RAw_POST_DATA。

  • 11天前
    4 #

    var req = new XMLHttpRequest(); req.open('POST', 'http://www.example.com/my_url' true); req.send('any data you want'); 假設它是 _POSTapplication/x-www-form-urlencoded 表單值. multipart/form-data (如果已填充)為原始字元串.您也可以使用psuedo-url HTTP_RAW_POST_DATA訪問 .您可以使用AJAX提交任意的POST資料(例如XML,JSON,HTML)。

    php://input

  • CSS規範:塊級框,塊容器框和塊框
  • javascript:在整个站點範圍內防止XSS攻击