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
PHP4 与 MySQL 交互使用
Oct 09 PHP
PHP Stream_*系列函数
Aug 01 PHP
解析PHP中常见的mongodb查询操作
Jun 20 PHP
推荐25款php中非常有用的类库
Sep 29 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
Nov 05 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
May 20 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
Jun 17 PHP
PHP使用ActiveMQ实例
Feb 05 PHP
php插入mysql数据返回id的方法
May 31 PHP
php对象工厂类完整示例
Aug 09 PHP
基于thinkphp6.0的success、error实现方法
Nov 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
php 不同编码下的字符串长度区分
2009/09/26 PHP
PHP发明人谈MVC和网站设计架构 貌似他不支持php用mvc
2011/06/04 PHP
php中JSON的使用方法
2015/04/30 PHP
基于PHP实现的事件机制实例分析
2015/06/18 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
JavaScript 学习技巧
2010/02/17 Javascript
picChange 图片切换特效的函数代码
2010/05/06 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
showModalDialog在谷歌浏览器下会返回Null的解决方法
2013/11/27 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
简单的分页代码js实现
2016/05/17 Javascript
深入理解react-router@4.0 使用和源码解析
2017/05/23 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
2017/08/04 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
vue+egg+jwt实现登录验证的示例代码
2019/05/18 Javascript
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
python实现中文输出的两种方法
2015/05/09 Python
python中map()函数的使用方法示例
2017/09/29 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
python爬虫实例详解
2018/06/19 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
J2EE包括哪些技术
2016/11/25 面试题
音乐教学随笔感言
2014/02/19 职场文书
商务日语专业毕业生自荐信
2014/03/27 职场文书
买卖合同协议书范本
2014/10/18 职场文书
员工辞职信范文
2015/03/02 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python