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的安全
Oct 09 PHP
使用php+xslt在windows平台上
Oct 09 PHP
php重定向的三种方法分享
Feb 22 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
Nov 07 PHP
php版小黄鸡simsimi聊天机器人接口分享
Jan 26 PHP
php实现简单文件下载的方法
Jan 30 PHP
PHP递归遍历多维数组实现无限分类的方法
May 06 PHP
JavaScript实现删除电脑的关机键
Jul 26 PHP
php对接java现实加签验签的实例
Nov 25 PHP
php-app开发接口加密详解
Apr 18 PHP
PHP实现简单的协程任务调度demo示例
Feb 01 PHP
php使用fputcsv实现大数据的导出操作详解
Feb 27 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书写安全的脚本代码
2012/02/05 PHP
ThinkPHP分组下自定义标签库实例
2014/11/01 PHP
PHP浮点数精度问题汇总
2015/05/13 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
PHP使用DOM对XML解析处理操作示例
2019/07/04 PHP
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
2011/09/20 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
JQuery遍历DOM节点的方法
2015/06/11 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
jQuery中的100个技巧汇总
2016/12/15 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
微信小程序form表单组件示例代码
2018/07/15 Javascript
iconfont的三种使用方式详解
2018/08/05 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
[01:03]悬念揭晓 11月26日DOTA2完美盛典不见不散
2017/11/23 DOTA
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
Python中创建二维数组
2018/10/17 Python
python dataframe向下向上填充,fillna和ffill的方法
2018/11/28 Python
在Python中使用Neo4j的方法
2019/03/14 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
2019/08/13 Python
学Python 3的理由和必要性
2019/11/19 Python
python带参数打包exe及调用方式
2019/12/21 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
军训新闻稿范文
2015/07/17 职场文书
《角的初步认识》教学反思
2016/02/17 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
如何拟写通知正文?
2019/04/02 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
CSS 实现Chrome标签栏的技巧
2021/08/04 HTML / CSS