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 Header用于页面跳转要注意的几个问题总结
Oct 03 PHP
PHP与C#分别格式化文件大小的代码
May 14 PHP
PHP的SQL注入过程分析
Jan 06 PHP
Function eregi is deprecated (解决方法)
Jun 21 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
Apr 24 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
Sep 12 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
Oct 31 PHP
php生成不重复随机数、数组的4种方法分享
Mar 30 PHP
php递归遍历多维数组的方法
Apr 18 PHP
PHP register_shutdown_function()函数的使用示例
Jun 23 PHP
yii数据库的查询方法
Dec 28 PHP
详解PHP PDO简单教程
May 28 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新手上路(十一)
2006/10/09 PHP
mysql5写入和读出乱码解决
2006/11/25 PHP
解析php中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
为jquery的ajaxfileupload增加附加参数的方法
2014/03/04 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
一个php+js实时显示时间问题
2015/10/12 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
react.js 获取真实的DOM节点实例(必看)
2017/04/17 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
使用JavaScript实现贪吃蛇游戏
2020/09/29 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
Python中用于计算对数的log()方法
2015/05/15 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
Python3读取和写入excel表格数据的示例代码
2020/06/09 Python
香港迪士尼乐园酒店预订:Hong Kong Disneyland Hotels
2017/05/02 全球购物
Linux的文件类型
2012/03/07 面试题
学生学习总结的自我评价
2013/10/22 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers
分享Python异步爬取知乎热榜
2022/04/12 Python