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基础知识:类与对象(3) 构造函数和析构函数
Dec 13 PHP
php session应用实例 登录验证
Mar 16 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
Oct 29 PHP
PHPMailer的主要功能特点和简单使用说明
Feb 17 PHP
php实现读取手机客户端浏览器的类
Jan 09 PHP
Laravel 5框架学习之路由、控制器和视图简介
Apr 07 PHP
PHP实现即时输出、实时输出内容方法
May 27 PHP
5款适合PHP使用的HTML编辑器推荐
Jul 03 PHP
详解PHP+AJAX无刷新分页实现方法
Nov 03 PHP
关于php中一些字符串总结
May 05 PHP
理解php依赖注入和控制反转
May 11 PHP
老生常谈文本文件和二进制文件的区别
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
探讨fckeditor在Php中的配置详解
2013/06/08 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
PHP 访问数据库配置通用方法(json)
2018/05/20 PHP
Angularjs制作简单的路由功能demo
2015/04/14 Javascript
BootstrapValidator不触发校验的实现代码
2016/09/28 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
老生常谈javascript中逻辑运算符&amp;&amp;和||的返回值问题
2017/04/13 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
从源码看angular/material2 中 dialog模块的实现方法
2017/10/18 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
2020/03/31 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
WebPack工具运行原理及入门教程
2020/12/02 Javascript
深入理解python try异常处理机制
2016/06/01 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
用python处理图片实现图像中的像素访问
2018/05/04 Python
python3.4实现邮件发送功能
2018/05/28 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
Pycharm学生免费专业版安装教程的方法步骤
2020/09/24 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
2020/11/17 Python
python 数据类型强制转换的总结
2021/01/25 Python
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
加拿大时装零售商:Influence U
2018/12/22 全球购物
Python中如何定义一个函数
2016/09/06 面试题
高考备战决心书
2014/03/11 职场文书
小学母亲节活动方案
2014/03/14 职场文书
商务日语专业毕业生自荐信
2014/03/27 职场文书
婚宴来宾致辞
2015/07/28 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏