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 相关文章推荐
PHP4.04简明安装
Oct 09 PHP
PHP 数组排序方法总结 推荐收藏
Jun 30 PHP
PHP中通过语义URL防止网站被攻击的方法分享
Sep 08 PHP
php中数组首字符过滤功能代码
Jul 31 PHP
php计算十二星座的函数代码
Aug 21 PHP
如何用php获取文件名后缀
Jun 09 PHP
php共享内存段示例分享
Jan 20 PHP
PHP针对JSON操作实例分析
Jan 12 PHP
php根据生日计算年龄的方法
Jul 13 PHP
浅谈PHP中的
Apr 23 PHP
Yii1.1中通过Sql查询进行的分页操作方法
Mar 16 PHP
thinkphp自定义权限管理之名称判断方法
Apr 01 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超级全局变量
2010/01/26 PHP
常见的PHP五种设计模式小结
2011/03/23 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
2014/06/13 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
2019/10/30 PHP
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
$.format,jquery.format 使用说明
2011/07/13 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
2018/05/15 NodeJs
分享vue里swiper的一些坑
2018/08/30 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
vue组件中实现嵌套子组件案例
2020/08/31 Javascript
js实现淘宝浏览商品放大镜功能
2020/10/28 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
python实现广度优先搜索过程解析
2019/10/19 Python
tensorflow生成多个tfrecord文件实例
2020/02/17 Python
python实现超级马里奥
2020/03/18 Python
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
英国在线照明超市:Castlegate Lights
2019/10/30 全球购物
高分子材料个人求职信范文
2013/09/25 职场文书
办公室主任竞聘演讲稿
2014/05/15 职场文书
大学专科求职信
2014/07/02 职场文书
反腐倡廉警示教育活动心得体会
2014/09/04 职场文书
监察建议书
2015/02/04 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
初中重阳节活动总结
2015/05/05 职场文书
违规违纪检讨书范文
2015/05/06 职场文书