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入门速成(2)
Oct 09 PHP
php中文本数据翻页(留言本翻页)
Oct 09 PHP
PHP令牌 Token改进版
Jul 18 PHP
PHP游戏编程25个脚本代码
Feb 08 PHP
php中神奇的fastcgi_finish_request
May 02 PHP
PHP 遍历文件实现代码
May 04 PHP
PHP排序之二维数组的按照字母排序实现代码
Aug 13 PHP
PHP实现指定字段的多维数组排序函数分享
Mar 09 PHP
PHP导出Excel实例讲解
Jan 24 PHP
php模板引擎技术简单实现
Mar 15 PHP
php利用header函数下载各种文件
Aug 24 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
Oct 15 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
第十三节 对象串行化 [13]
2006/10/09 PHP
PHP与javascript实现变量交互的示例代码
2013/07/23 PHP
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
python3访问sina首页中文的处理方法
2014/02/24 Python
跟老齐学Python之Python安装
2014/09/12 Python
python opencv设置摄像头分辨率以及各个参数的方法
2018/04/02 Python
python去除文件中重复的行实例
2018/06/29 Python
Python文件读写常见用法总结
2019/02/22 Python
tensorflow 变长序列存储实例
2020/01/20 Python
如何用python批量调整视频声音
2020/12/22 Python
浅析图片上传及canvas压缩的流程
2020/06/10 HTML / CSS
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
创建索引时需要注意的事项
2013/05/13 面试题
精选干货:Java精选笔试题附答案
2014/01/18 面试题
外语学院毕业生的自我鉴定
2013/11/28 职场文书
烹调加工管理制度
2014/02/04 职场文书
奉献演讲稿范文
2014/05/21 职场文书
节约能源标语
2014/06/17 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
活动宣传稿范文
2015/07/23 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
《槐乡的孩子》教学反思
2016/02/20 职场文书