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 相关文章推荐
在任意字符集下正常显示网页的方法二(续)
Apr 01 PHP
php方法调用模式与函数调用模式简例
Sep 20 PHP
Fine Uploader文件上传组件应用介绍
Jan 06 PHP
php+js iframe实现上传头像界面无跳转
Apr 29 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
Jun 12 PHP
Web程序工作原理详解
Dec 25 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
Apr 15 PHP
joomla数据库操作示例代码
Jan 06 PHP
PHP 5.6.11中CURL模块问题的解决方法
Aug 08 PHP
PHP接口并发测试的方法(推荐)
Dec 15 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
Dec 24 PHP
PHP容器类的两种实现方式示例
Jul 24 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
UCenter Home二次开发指南
2009/05/28 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
2012/02/27 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
2018/06/09 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
JS 控制非法字符的输入代码
2009/12/04 Javascript
prettify 代码高亮着色器google出品
2010/12/28 Javascript
JS调用CS里的带参方法实例
2013/08/01 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
9款2014最热门jQuery实用特效推荐
2014/12/07 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
Javascript中For In语句用法实例
2015/05/14 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
关于Vue Webpack2单元测试示例详解
2017/08/14 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
vue学习笔记之作用域插槽实例分析
2020/02/01 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
[01:10]DOTA2 Supermajor:英雄,由我们见证
2018/05/14 DOTA
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
详解Python中用于计算指数的exp()方法
2015/05/14 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
Kaufmann Mercantile官网:家居装饰、配件、户外及更多
2018/09/28 全球购物
美国宠物护理专家:Revival Animal Health
2020/01/05 全球购物
介绍一下MD5加密算法
2016/11/12 面试题
《雨霖铃》听课反思
2014/02/13 职场文书
执法作风整顿剖析材料
2014/10/11 职场文书
保安辞职信范文
2015/02/28 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
Python 中的 copy()和deepcopy()
2021/11/07 Python