PHP curl 或 file_get_contents 获取需要授权页面的方法
2018-09-07 17:15
今天因工作需要,需要用 curl / file_get_contents 获取需要授权(Authorization)的页面内容,解决后写了这篇文章分享给大家。
PHP curl 扩展,能够在服务器端发起POST/GET请求,访问页面,并能获取页面的返回数据。
例如要获取的页面:
<?php $content = isset($_POST[content])? $_POST[content] : ; header(content-type:application/json); echo json_encode(array(content=>$content)); ?>
使用curl获取server.php页面
<?php $url =
如果服务没有安装php curl扩展,使用file_get_contents也可以实现发起请求,获取页面返回数据
<?php $url =
使用curl 和 file_get_contents 返回的结果都是一样的。
Array ( [content] => fdipzone blog )
对于需要授权的页面,例如使用了htpasswd+.htaccess设置目录访问权限的页面,直接用上面的方法会返回401 Unauthorized错误。
这次的例子先不使用htpasswd+.htaccess来控制访问权限,而使用 $_SERVER[PHP_AUTH_USER] 和 $_SERVER[PHP_AUTH_PW]这两个服务器参数。
修改为:
<?php if(!isset($_SERVER[PHP_AUTH_USER])) { header(
设定帐号:fdipzone 密码:654321
curl中,有一个参数是 CURLOPT_USERPWD,我们可以利用这个参数把帐号密码在请求时发送过去。
curl_setopt($ch, CURLOPT_USERPWD, 帐号:密码);
curl请求的程序修改为:
<?php $url = 加入这句 $ret = curl_exec($ch); $retinfo = curl_getinfo($ch); curl_close($ch); if($retinfo[http_code]==200){ $data = json_decode($ret, true); print_r($data); }else{ echo POST Fail; } ?>
而file_get_contents 如果要发送帐号和密码,需要手动拼接header
file_get_contents 请求的程序修改为:
<?php $url = 加入这句 $opt = array( http => array( method => POST, header => content-type:application/x-www-form-urlencoded\r\n.$auth.\r\n, // 把$auth加入到header content => http_build_query($param) ) ); $context = stream_context_create($opt); $ret = file_get_contents($url, false, $context); if($ret){ $data = json_decode($ret, true); print_r($data); }else{ echo POST Fail; } ?>
源码下载地址:点击查看
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!
上一篇:生成卡号php代码
下一篇:PHP之变量、常量学习笔记
文章标题:PHP curl 或 file_get_contents 获取需要授权页面的方法
文章链接:http://soscw.com/essay/14571.html