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 编写的日历
Oct 09 PHP
浅析PHP水印技术
Feb 14 PHP
apache rewrite_module模块使用教程
Jan 10 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
Jun 09 PHP
php面向对象中的魔术方法中文说明
Mar 04 PHP
PHP输出日历表代码实例
Mar 27 PHP
PHP使用缓存即时输出内容(output buffering)的方法
Aug 03 PHP
PHP+AJAX实现投票功能的方法
Sep 28 PHP
PHP 读取文本文件内容并分页显示
Jan 02 PHP
PHP实现清除MySQL死连接的方法
Jul 23 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 PHP
PHP实现获取url地址中顶级域名的方法示例
Jun 05 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
服务器端解压缩zip的脚本
2006/12/22 PHP
QQ互联一键登录审核不通过的解决方案
2014/09/10 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
Yii2框架redis基本应用示例
2018/07/13 PHP
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
js预载入和JavaScript Image()对象使用介绍
2011/08/28 Javascript
js 浏览器事件介绍
2012/03/30 Javascript
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
vue-cli初始化项目中使用less的方法
2018/08/09 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
python获取当前日期和时间的方法
2015/04/30 Python
用C++封装MySQL的API的教程
2015/05/06 Python
TensorFlow 合并/连接数组的方法
2018/07/27 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
PyTorch中常用的激活函数的方法示例
2019/08/20 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
美国婚礼和派对礼品网站:Kate Aspen(新娘送礼会、迎婴派对)
2018/03/28 全球购物
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
给同事的道歉信
2014/01/11 职场文书
网上签名寄语活动留言
2014/01/18 职场文书
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
校园文化标语
2014/06/18 职场文书
英文辞职信范文
2015/05/13 职场文书
钢铁是怎样炼成的读书笔记
2015/06/29 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书