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 相关文章推荐
攻克CakePHP系列三 表单数据增删改
Oct 22 PHP
PHP 第二节 数据类型之转换
Apr 28 PHP
整理的一些实用WordPress后台MySQL操作命令
Jan 07 PHP
PHP加Nginx实现动态裁剪图片方案
Mar 10 PHP
php中session过期时间设置及session回收机制介绍
May 05 PHP
php生成zip文件类实例
Apr 07 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
Oct 03 PHP
php preg_match的匹配不同国家语言实例
Dec 29 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
laravel框架数据库配置及操作数据库示例
Oct 10 PHP
阿里对象存储OSS在laravel框架中的使用方法
Oct 13 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 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
世界第一个无线广播电台 KDKA
2021/03/01 无线电
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
CI框架附属类用法分析
2018/12/26 PHP
PHP实现爬虫爬取图片代码实例
2021/03/03 PHP
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
jquery+css3实现会动的小圆圈效果
2016/01/27 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
Python使用pylab库实现画线功能的方法详解
2017/06/08 Python
Python实现端口检测的方法
2018/07/24 Python
Selenium(Python web测试工具)基本用法详解
2018/08/10 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
2020/04/22 Python
网页布局中CSS样式无效的十个重要原因详解
2017/08/10 HTML / CSS
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
劳力士官方珠宝商:J.R. Dunn Jewelers
2018/09/29 全球购物
房地产销售大学生自我评价分享
2013/11/11 职场文书
医院门卫岗位职责
2013/12/30 职场文书
学习型党组织心得体会
2014/09/12 职场文书
幼儿园辞职信范文
2015/02/27 职场文书
教师岗位说明书
2015/09/30 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
Python的property属性详细讲解
2022/04/11 Python