PHP curl 或 file_get_contents 获取需要授权页面的方法


Posted in PHP onMay 05, 2017

今天因工作需要,需要用 curl / file_get_contents 获取需要授权(Authorization)的页面内容,解决后写了这篇文章分享给大家。

PHP curl 扩展,能够在服务器端发起POST/GET请求,访问页面,并能获取页面的返回数据。

例如要获取的页面:http://localhost/server.php

<?php 
$content = isset($_POST['content'])? $_POST['content'] : ''; 
header('content-type:application/json'); 
echo json_encode(array('content'=>$content)); 
?>

使用curl获取server.php页面

<?php 
$url = 'http://localhost/server.php'; 
$param = array('content'=>'fdipzone blog'); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param)); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$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'; 
} 
?>

如果服务没有安装php curl扩展,使用file_get_contents也可以实现发起请求,获取页面返回数据

<?php 
$url = 'http://localhost/server.php'; 
$param = array('content'=>'fdipzone blog'); 

$opt = array( 
 'http' => array( 
  'method' => 'POST', 
  'header' => 'content-type:application/x-www-form-urlencoded', 
  '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'; 
} 
?>

使用curl 和 file_get_contents 返回的结果都是一样的。

Array 
( 
 [content] => fdipzone blog 
)

对于需要授权的页面,例如使用了htpasswd+.htaccess设置目录访问权限的页面,直接用上面的方法会返回401 Unauthorized错误。

这次的例子先不使用htpasswd+.htaccess来控制访问权限,而使用 $_SERVER['PHP_AUTH_USER'] $_SERVER['PHP_AUTH_PW']这两个服务器参数。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

PHP 相关文章推荐
五个PHP程序员工具
May 26 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
Jul 16 PHP
php文本转图片自动换行的方法
Mar 13 PHP
php读取3389的脚本
May 06 PHP
ThinkPHP独立分组使用的注意事项
Nov 25 PHP
PHP SPL标准库之SplFixedArray使用实例
May 12 PHP
php获取远程文件的内容和大小
Nov 03 PHP
使用PHPMailer发送邮件实例
Feb 15 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 PHP
php使用curl获取header检测开启GZip压缩的方法
Aug 15 PHP
Yii框架安装简明教程
May 15 PHP
PHP8.0新功能之Match表达式的使用
Jul 19 PHP
php 浮点数比较方法详解
May 05 #PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
May 05 #PHP
完美解决在ThinkPHP控制器中命名空间的问题
May 05 #PHP
Yii2配置Nginx伪静态的方法
May 05 #PHP
php生成网页桌面快捷方式
May 05 #PHP
php 如何设置一个严格控制过期时间的session
May 05 #PHP
php 数组元素快速去重
May 05 #PHP
You might like
PHP安装全攻略:APACHE
2006/10/09 PHP
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
Thinkphp的volist标签嵌套循环使用教程
2014/07/08 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
表单元素事件 (Form Element Events)
2009/07/17 Javascript
jquery ajax执行后台方法
2010/03/18 Javascript
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
2015/08/21 Javascript
JS实现的颜色实时渐变效果完整实例
2016/03/25 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
node.js 如何监视文件变化
2020/09/01 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
python检测远程服务器tcp端口的方法
2015/03/14 Python
简单介绍Python中的decode()方法的使用
2015/05/18 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
2017/11/15 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
Python中的list与tuple集合区别解析
2019/10/12 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
同程旅游英文网站:LY.com
2018/11/13 全球购物
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
Servlet面试题库
2015/07/18 面试题
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
中学生团员自我评价分享
2013/12/07 职场文书
高二学生评语大全
2014/04/25 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
技校毕业生自荐信
2014/06/03 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
2016五一手机促销广告语
2016/01/28 职场文书