作者airgo (韋高)
看板PHP
標題[請益] POST形式接收資料問題
時間Fri Nov 4 17:47:15 2016
小弟目前正在利用POST的形式將我們的資料傳到server端
POST的格式如下
POST process.php HTTP/1.1
Content-type: application/x-www-form-urlencoded
Content-Length: 102
Host: XXX.ee.nthu.edu.tw
data= data_string
要上傳的資料用char接收每一筆資料在串成一個string
PHP上接收的寫法如下
$save_data=$_POST["data"];
if($save_data!=NULL){
$filename = fopen("raw_data.txt","w+");
fwrite($filename, $save_data);
fclose($filename);
echo "WRITE SUCCESS <br>";
}
現在問題在於我接收這個string的server端他收到的這串string會是不完整的
目前發現要是我這串string內若有ASCII編碼的NULL這個編碼
資料就會中斷在這裡,似乎是PHP在讀值時是將NULL這個編碼當成字串的結束
有沒有什麼方法可以讓PHP讀完整串資料呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.14.79
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1478252842.A.89F.html
1F:→ chaoms: 看不懂說明~但猜一下應該是沒有encode就post 11/04 20:24
2F:→ chaoms: 可以查一下rfc的定義,看內容像自己寫http post 11/04 20:29
3F:→ airgo: 對 HTTP POST code是自己Key的 所以是少了encode嗎 11/04 21:09
4F:推 wilson200106: 都找到原因了,就先用簡單的str_replace一下試試看 11/04 21:11
5F:→ airgo: POST是參考範例就使用的方法 詳細我還不是很懂 11/04 21:12
6F:→ wilson200106: 雖然我覺得,是換行符號啦XDD 11/04 21:14
針對我要傳輸的資料我再講清楚一點好了
我現在的做法是把我收到的資料當成是一組ASCII碼在傳送
也就是如果我的裝置接收到的資料是41、42、43
在裝置上我會把它變成ASCII碼,也就是A、B、C
在串成一串string=ABC這樣去傳送它
那現在我發現如果我要送出的資料是41、42、0、43
ASCII編碼會是A、B、NULL、C
但是在server上收到的資料會僅有string=AB
所以才不解是哪裡的問題
那我目前正在研究encode的用意,不知道能不能解決這問題
※ 編輯: airgo (140.114.14.79), 11/04/2016 22:02:36
7F:→ chaoms: Urlencode一下資料先試試看啦 11/04 23:34
8F:→ chaoms: 有可能web server不支援非正規格而已 11/04 23:36
9F:→ airgo: 經過encode編碼後的確可以正常傳輸了 感謝大家的回覆!! 11/05 19:45