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教程之PHP中shell脚本的使用方法分享
Feb 23 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
Feb 14 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
Mar 17 PHP
PHP中nowdoc和heredoc使用需要注意的一点
Mar 21 PHP
PHP反向代理类代码
Aug 15 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
Oct 14 PHP
Thinkphp多文件上传实现方法
Oct 31 PHP
PHP上传文件时自动分配路径的方法
Jan 09 PHP
php的4种常见运行方式
Mar 20 PHP
PHP类型约束用法示例
Sep 28 PHP
SAE实时日志接口SDK用法示例
Oct 09 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 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
星际争霸任务指南——虫族
2020/03/04 星际争霸
使用php4加速网络传输
2006/10/09 PHP
php面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
php学习之流程控制实现代码
2011/06/09 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
一段实用的php验证码函数
2016/05/19 PHP
功能强大的PHP发邮件类
2016/08/29 PHP
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
扩展Bootstrap Tooltip插件使其可交互的方法
2016/11/07 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
2017/07/03 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
python更新列表的方法
2015/07/28 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
Python实战之制作天气查询软件
2019/05/14 Python
Python 实现使用空值进行赋值 None
2020/03/12 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
Python解析微信dat文件的方法
2020/11/30 Python
C#怎么让一个窗口居中显示?
2015/10/20 面试题
汽车维修专业个人求职信范文
2014/01/01 职场文书
一份婚庆公司创业计划书
2014/01/11 职场文书
财产公证书样本
2014/04/04 职场文书
护理专科毕业自荐信范文
2014/04/21 职场文书
社区活动总结范文
2015/05/07 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python
Python天气语音播报小助手
2021/09/25 Python
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript