发布日期:2018-03-26
怎样在PHP里使用file_get_contents()提交数据(发送一个POST请求)+ 查看更多
怎样在PHP里使用file_get_contents()提交数据(发送一个POST请求)
+ 查看更多
发布日期:2018-02-24 17:57
分类:PHP
浏览次数:226
如下:
我使用PHP的函数file_get_contents()来获取URL的内容,然后通过变量$ http_response_header来处理请求头。 现在的问题是,我们需要提交一些数据(例如,登录表单)到目标的URL。
我该怎么做? 我猜可能使用stream_context能够做到,但我不是完全清楚。 谢谢。
我使用PHP的函数file_get_contents()来获取URL的内容,然后通过变量$ http_response_header来处理请求头。 现在的问题是,我们需要提交一些数据(例如,登录表单)到目标的URL。
我该怎么做? 我猜可能使用stream_context能够做到,但我不是完全清楚。 谢谢。
回答:
使用file_get_contents提交一个HTTP POST请求不是那么难,事实上,正如你所猜测的,你必须使用$context参数。
下面是PHP说明文档里给出的例子,详情见这里[[http://fr2.php.net/manual/en/context.http.php]]
下面是PHP说明文档里给出的例子,详情见这里[[http://fr2.php.net/manual/en/context.http.php]]
$postdata = http_build_query( array( 'var1' => 'some content', 'var2' => 'doh' ) ); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata ) ); $context = stream_context_create($opts); $result = file_get_contents('http://example.com/submit.php', false, $context);
基本上,你必须使用正确的选项(上面的网页里有完整的列表)创建一个流,使用它作为file_get_contents的第三个参数,这样就ok了;-)
ps:一般来说,要发送HTTP POST请求,我们倾向于使用curl,它提供了很多选项,但是,流是PHP的好东西之一,这很少有人知道,太糟糕了。