作者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/cn.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