时间:2021-07-01 10:21:17 帮助过:3人阅读
- <span> <span>php<span>:<span>//<span>input 是个可以访问请求的原始数据的只读流。 POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA,因为它不依赖于特定的 php.ini 指令。 而且,这样的情况下 $HTTP_RAW_POST_DATA 默认没有<span>填充, 比激活 always_populate_raw_post_<span>data 潜在需要更少的内存。 enctype="multipart/form-data" 的时候 php://input 是无效的。 <span>1<span>, <span>php<span>:<span>//<span>input 可以读取http entity body中指定长度的值,由Content-Length指定长度,不管是POST方式或者GET方法提交过来的数据。但是,一般GET方法提交数据 时,http request entity body部分都为空。 <span>2<span>,<span>php<span>:<span>//<span>input 与$HTTP_RAW_POST_DATA读取的数据是一样的,都只读取Content-Type不为multipart/form-data的数据。<span> 学习<span>笔记 <span>1<span>,<span>Coentent<span>-<span>Type<span>仅在取值为<span>application<span>/<span>x<span>-<span>www<span>-<span>data<span>-<span>urlencoded<span>和<span>multipart<span>/<span>form<span>-<span>data<span>两种情况下,<span>PHP<span>才会将<span>http<span>请求数据包中相应的数据填入全局变量<span>$_POST <span>2<span>,<span>PHP<span>不能<span>识别的<span>Content<span>-<span>Type<span>类型的时候,会将<span>http<span>请求包中相应的数据填入变量<span>$HTTP_RAW_POST_DATA <span>3<span>, 只有<span>Coentent<span>-<span>Type<span>为<span>multipart<span>/<span>form<span>-<span><span>data<span>的时候,<span>PHP<span>不会将<span>http<span>请求数据包中的相应数据填入<span>php<span>:<span>//<span>input,否则其它情况都会。填入的长度,由Coentent-Length指定。 <span>4<span>,只有<span>Content<span>-<span>Type<span>为<span>application<span>/<span>x<span>-<span>www<span>-<span>data<span>-<span>urlencoded<span>时,<span>php<span>:<span>//<span>input数据才跟$_POST数据相一致。 <span>5<span>,<span>php<span>:<span>//<span>input数据总是跟$HTTP_RAW_POST_DATA相同,但是php://input比$HTTP_RAW_POST_DATA更凑效,且不需要特殊设置php.ini <span>6<span>,<span>PHP<span>会将<span>PATH<span>字段的<span>query_path<span>部分,填入全局变量<span>$_GET<span>。通常情况下,<span>GET<span>方法提交的<span>http<span>请求,<span>body<span>为空。
- 例子 <span>1<span>.<span>php<span>用<span>file_get_contents<span>(<span>"<span>php://input<span>"<span>)<span>或者<span>$HTTP_RAW_POST_DATA<span>可以接收<span>xml<span>数据
- 比如: <span>getXML<span>.<span>php<span>;<span>//<span>接收XML地址<span> <!--?<span-->php <span>$xmldata<span> = <span>file_get_contents<span>(<span>"<span>php://input<span>"<span>)<span>; <span>$data<span> = <span>(<span>array<span>)<span>simplexml_load_string<span>(<span>$xmldata<span>)<span>; <span>?><span> 这里的<span>$<span>data<span>就是包含<span><span>xml<span>数据的数组,具体<span>php<span>解析<span>xml<span>数据更新详细的方法 <span>sendXML<span>.<span>php<span> <!--?<span-->php <span>$xml<span> = <span>'<span><xml>xmldata</xml><span>'<span>;<span>//<span>要发送的xml <span>$url<span> = <span>'<span>http://localhost/test/getXML.php<span>'<span>;<span>//<span>接收XML地址 <span>$header<span> = <span>'<span>Content-type: text/xml<span>'<span>;<span>//<span>定义content-type为xml <span>$ch<span> = <span>curl_init<span>(<span>)<span>; <span>//<span>初始化curl <span>curl_setopt<span>(<span>$ch<span>, <span>CURLOPT_URL<span>, <span>$url<span>)<span>;<span>//<span>设置链接 <span>curl_setopt<span>(<span>$ch<span>, <span>CURLOPT_RETURNTRANSFER<span>, <span>1<span>)<span>;<span>//<span>设置是否返回信息 <span>curl_setopt<span>(<span>$ch<span>, <span>CURLOPT_HTTPHEADER<span>, <span>$header<span>)<span>;<span>//<span>设置HTTP头 <span>curl_setopt<span>(<span>$ch<span>, <span>CURLOPT_POST<span>, <span>1<span>)<span>;<span>//<span>设置为POST方式 <span>curl_setopt<span>(<span>$ch<span>, <span>CURLOPT_POSTFIELDS<span>, <span>$<span>xml<span>)<span>;<span>//<span>POST数据 <span>$response<span> = <span>curl_exec<span>(<span>$ch<span>)<span>;<span>//<span>接收返回信息 <span>if<span>(<span>curl_errno<span>(<span>$ch<span>)<span>)<span>{<span>//<span>出错则显示错误信息 <span>print <span>curl_error<span>(<span>$ch<span>)<span>; <span>} <span>curl_close<span>(<span>$ch<span>)<span>; <span>//<span>关闭curl链接 <span>echo <span>$response<span>;<span>//<span>显示返回信息 <span>?> <span>2<span>.一个手机上传图片到服务器的小程序
- 上传文件
- <!--?<span-->php <span>//<span>@file phpinput_post.php <span>$data<span>=<span>file_get_contents<span>(<span>'<span>btn.png<span>'<span>)<span>; <span>$http_entity_body<span> = <span>$<span>data<span>; <span>$http_entity_type<span> = <span>'<span>application/x-www-form-urlencoded<span>'<span>; <span>$http_entity_length<span> = <span>strlen<span>(<span>$http_entity_body<span>)<span>; <span>$host<span> = <span>'<span>127.0.0.1<span>'<span>; <span>$port<span> = <span>80<span>; <span>$path<span> = <span>'<span>/image.<span>php<span>'<span>; <span>$fp<span> = <span>fsockopen<span>(<span>$host<span>, <span>$port<span>, <span>$error_no<span>, <span>$error_desc<span>, <span>30<span>)<span>; <span>if <span>(<span>$fp<span>)<span>{ <span>fputs<span>(<span>$fp<span>, <span>"<span>POST <span>{$path}<span> HTTP/1.1<span>\r<span>\n<span>"<span>)<span>; <span>fputs<span>(<span>$fp<span>, <span>"<span>Host: <span>{$host}<span>\r<span>\n<span>"<span>)<span>; <span>fputs<span>(<span>$fp<span>, <span>"<span>Content-Type: <span>{$http_entity_type}<span>\r<span>\n<span>"<span>)<span>; <span>fputs<span>(<span>$fp<span>, <span>"<span>Content-Length: <span>{$http_entity_length}<span>\r<span>\n<span>"<span>)<span>; <span>fputs<span>(<span>$fp<span>, <span>"<span>Connection: close<span>\r<span>\n<span>\r<span>\n<span>"<span>)<span>; <span>fputs<span>(<span>$fp<span>, <span>$http_entity_body<span> . <span>"<span>\r<span>\n<span>\r<span>\n<span>"<span>)<span>; <span>while <span>(<span>!<span>feof<span>(<span>$fp<span>)<span>) <span>{ <span>$d<span> .= <span>fgets<span>(<span>$fp<span>, <span>4096<span>)<span>; <span>} <span>fclose<span>(<span>$fp<span>)<span>; <span>echo <span>$d<span>; <span>} <span>?><span> 接收文件
- <!--?<span-->php <span>/*<span>*
- *Recieve image <span>data
- *<span>*/ <span>error_reporting<span>(<span>E_ALL<span>)<span>; <span>function <span>get_contents<span>(<span>) <span>{ <span>$xmlstr<span>= <span>file_get_contents</span><span>(</span><span>"php</span><span>://input</span><span>"</span><span>)</span><span>; </span><span>$filename</span><span>=</span><span>time</span><span>(</span><span>)</span><span>.</span><span>'</span><span>.png</span><span>'</span><span>; </span><span>if</span><span>(</span>file_put_contents<span>(</span><span>$filename</span><span>,</span><span>$</span><span>str</span>xml<span>)</span><span>)</span><span>{ </span><span>echo </span><span>'</span><span>success</span><span>'</span><span>; </span><span>}</span><span>else</span><span>{ </span><span>echo </span><span>'</span><span>failed</span><span>'</span><span>; </span><span>} </span><span>} </span><span>get_contents</span><span>(</span><span>)</span><span>; </span><span>?> </span><span>3</span><span>.获取</span><span>HTTP</span><span>请求原文 </span><span>/*</span><span>*
- * 获取HTTP请求原文
- *</span><span> @return </span><span>string </span><span>*/ </span><span>function </span><span>get_http_raw</span><span>(</span><span>) </span><span>{ </span><span>$raw</span><span> = </span><span>'</span><span>'</span><span>; </span><span>//</span><span> (1) 请求行 </span><span>$raw</span><span> .= </span><span>$_SERVER</span><span>[</span><span>'</span><span>REQUEST_METHOD</span><span>'</span><span>]</span><span>.</span><span>' </span><span>'</span><span>.</span><span>$_SERVER</span><span>[</span><span>'</span><span>REQUEST_URI</span><span>'</span><span>]</span><span>.</span><span>' </span><span>'</span><span>.</span><span>$_SERVER</span><span>[</span><span>'</span><span>SERVER_PROTOCOL</span><span>'</span><span>]</span><span>.</span><span>"</span><span>\r</span><span>\n</span><span>"</span><span>; </span><span>//</span><span> (2) 请求Headers </span><span>foreach</span><span>(</span><span>$_SERVER </span><span>as </span><span>$key</span><span> => </span><span>$value</span><span>) </span><span>{ </span><span>if</span><span>(</span><span>substr</span><span>(</span><span>$key</span><span>, </span><span>0</span><span>, </span><span>5</span><span>)</span><span> === </span><span>'</span><span>HTTP_</span><span>'</span><span>) </span><span>{ </span><span>$key</span><span> = </span><span>substr</span><span>(</span><span>$key</span><span>, </span><span>5</span><span>)</span><span>; </span><span>$key</span><span> = </span><span>str_replace</span><span>(</span><span>'</span><span>_</span><span>'</span><span>, </span><span>'</span><span>-</span><span>'</span><span>, </span><span>$key</span><span>)</span><span>; </span><span>$raw</span><span> .= </span><span>$key</span><span>.</span><span>'</span><span>: </span><span>'</span><span>.</span><span>$value</span><span>.</span><span>"</span><span>\r</span><span>\n</span><span>"</span><span>; </span><span>} </span><span>} </span><span>//</span><span> (3) 空行 </span><span>$raw</span><span> .= </span><span>"</span><span>\r</span><span>\n</span><span>"</span><span>; </span><span>//</span><span> (4) 请求Body </span><span>$raw</span><span> .= </span><span>file_get_contents</span><span>(</span><span>'php</span><span>://input</span><span>'</span><span>)</span><span>; </span><span>return </span><span>$raw</span><span>; </span><span>}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
以上就介绍了file_get_contents()的另一种使用方法,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。