當我使用method =「post」enctype =「text/plain」不兼容?
<form method="post" enctype="text/plain" action="proc.php">
形式的數據不能被髮送到正確proc.php文件。爲什麼?問題是什麼?爲什麼我不能在post中使用文本/純文本編碼,但是我可以在get方法中使用它?
當我使用method =「post」enctype =「text/plain」不兼容?
<form method="post" enctype="text/plain" action="proc.php">
形式的數據不能被髮送到正確proc.php文件。爲什麼?問題是什麼?爲什麼我不能在post中使用文本/純文本編碼,但是我可以在get方法中使用它?
[修訂]
答案是,因爲PHP不處理它(和它是不是一個錯誤):
https://bugs.php.net/bug.php?id=33741
Valid values for enctype in <form> tag are:
application/x-www-form-urlencoded
multipart/form-data
首先是默認,第二個你只需要當你上傳文件。
@Alohci提供的解釋,爲什麼PHP不填充$_POST
陣列,但值存儲變量$HTTP_RAW_POST_DATA
內。
什麼可以去錯text/plain
加密類型示例:
file1.php:
<form method="post" enctype="text/plain" action="file2.php">
<textarea name="input1">abc
input2=def</textarea>
<input name="input2" value="ghi" />
<input type="submit">
</form>
file2.php:
<?php
print($HTTP_RAW_POST_DATA);
?>
結果:
input1=abc
input2=def
input2=ghi
無方式來區分guish什麼是input1
和input2
變量的值。它可以是
abc\r\ninput2=def
,輸入2 = ghi
,以及abc
,輸入2 = def\r\ninput2=ghi
使用之前提到的其他兩種編碼時,沒有這樣的問題。
GET和POST的區別:
enctype="text/plain"
- 它只是被瀏覽器忽略,你可以使用Wireshark的嗅探請求報文)進行測試,text/plain
或application/x-www-form-urlencoded
,bu第二個是唯一不含糊的解決方案。根據[HTML5](http://dev.w3.org/html5/spec/association-of-controls-and-forms.html#attr-fs-enctype),「text/plain」是第三個有效的內容 - 鍵入enctype。格式在http://dev.w3.org/html5/spec/association-of-controls-and-forms.html#plain-text-form-data中描述。 – Alohci
一個不錯的表是[這裏](http://www.w3schools.com/tags/att_form_enctype.asp)(我已經發布了它) –
坦率地說,我從來不相信w3schools說的一個詞。 – Alohci
HTML5確實定義瞭如何格式化表單數據,格式爲text/plain
:http://dev.w3.org/html5/spec/association-of-controls-and-forms.html#plain-text-form-data。
在該部分的底部,它說:使用純文本/格式
有效載荷旨在是人類可讀 。由於 格式不明確(例如,無法在值的末尾區分換行符和換行符中的 字面換行符),因此它們不可靠計算機可靠解釋。
因此,PHP不會試圖解釋它,只會使它在原始形式中可用。對我來說,這似乎是正確的做法。
我敢肯定你不需要定義加密類型,除非你正在做一個文件上傳,那麼就應該是: ENCTYPE = 「的multipart/form-data的」 [鏈接](HTTP:/ /www.w3.org/TR/html4/interact/forms.html#adef-enctype) – rwyland
根據w3schools([link](http://www.w3schools.com/tags/att_form_enctype.asp)),'application/x-www-form-urlencoded'是默認值。 –
我的問題是爲什麼method =「post」和enctype =「text/plain」不能一起工作?我的HTML代碼不會改變,我應該使用的並不重要!!!!!!!!!!!!!!!!!!! – Narek