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
Get或Post提交值的非法数据处理
Oct 09 PHP
PHP 表单提交给自己
Jul 24 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
php下使用SimpleXML 处理XML 文件
Feb 27 PHP
php递归使用示例(php递归函数)
Feb 14 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
May 04 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
May 04 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
Dec 18 PHP
PHP实现链式操作的原理详解
Sep 16 PHP
PHP 中魔术常量的实例详解
Oct 26 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 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中通过ADODB库实现调用Access数据库之修正版本
2006/12/31 PHP
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
PHP URL参数获取方式的四种例子
2014/02/28 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
2014/06/19 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
Ajax实现对静态页面的文章访问统计功能示例
2016/10/10 PHP
尽可能写&quot;友好&quot;的&quot;Javascript&quot;代码
2007/01/09 Javascript
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
12种不宜使用的Javascript语法整理
2013/11/04 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
js动态添加带圆圈序号列表的实例代码
2021/02/18 Javascript
[03:10]2014DOTA2 TI马来劲旅Titan首战告捷目标只是8强
2014/07/10 DOTA
爬山算法简介和Python实现实例
2014/04/26 Python
使用grappelli为django admin后台添加模板
2014/11/18 Python
Python中的测试模块unittest和doctest的使用教程
2015/04/14 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
python正则表达式实例代码
2020/03/03 Python
销售部主管岗位职责
2013/12/18 职场文书
运动会解说词100字
2014/01/31 职场文书
大课间活动实施方案
2014/03/06 职场文书
科技活动总结范文
2015/05/11 职场文书
物业保安辞职信
2015/05/12 职场文书
2015年保卫科工作总结
2015/05/14 职场文书
教师节校长致辞
2015/07/31 职场文书
个人房屋租赁合同(标准范本)
2019/09/16 职场文书