php 模拟POST|GET操作实现代码


Posted in PHP onJuly 20, 2010

最近开发social game,发现使用这个东西还是比较平凡,这里做个总结,一来为自己留点记忆,另外希望对大家有帮助.

首先来看看需求,如果我们开发facebook上social game,需要调用它的接口来获得用户在facebook上的好友信息。这个时候我们就要访问facebook提供的一个地址呢,当然你在访问他的时候,他需要对你的访问做验证,防止非法请求。这个时候就得向其post|get一些参数。
如下面的地址:

$url_with_get= "http://api.facebook.com/restserver.php?method=facebook.friends.get&session_key=&api_key=1232121311&v=1.0"; 
$post = array('sig'=>12312123234353);

怎么样从这个地址中获得数据,简单地介绍一下下面的代码:
if(function_exists('curl_init')) 
{ 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url_with_get); 

curl_setopt($ch, CURLOPT_POST, 1); 

curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$result = curl_exec($ch); 

curl_close($ch); 
} 
else 
{ 

$content = http_build_query($post) 

$content_length = strlen($content); 

$context = 

array('http' => 
array('method' => 'POST', 
'user_agent' => $user_agent, 
'header' => 'Content-Type: ' . $content_type . "\r\n" . 
'Content-Length: ' . $content_length, 
'content' => $content)); 
$context_id = stream_context_create($context); 
$sock = fopen($url_with_get, 'r', false, $context_id); 
$result = ''; 
if ($sock) 

{ 


while (!feof($sock)) 

$result .= fgets($sock, 4096); 

fclose($sock); 
} 
return $result; 
} 
}

上面的代码使用两种方式来调facebook的接口,第一种县判断用户的环境是否开启了curl库,开启了这个库,就采用这种方式来获取请求。里面详细的参数讲解大家可以参考手册。
这里提示一点,由于我们通常情况下需要获得调用接口的返回结果,所以要设置CURLOPT_RETURNTRANSFER这个值,将结果返回到变量中。
第二种方式是直观,将url请求转化为文件流来处理。
PHP 相关文章推荐
php error_log 函数的使用
Apr 13 PHP
php 获取select下拉列表框的值
May 08 PHP
php结合表单实现一些简单功能的例子
Jun 04 PHP
PHP使用feof()函数读文件的方法
Nov 07 PHP
php实现Mysql简易操作类
Oct 11 PHP
CI映射(加载)数据到view层的方法
Mar 28 PHP
php基于curl实现随机ip地址抓取内容的方法
Oct 11 PHP
php+js实现百度地图多点标注的方法
Nov 30 PHP
php实现购物车功能(以大苹果购物网为例)
Mar 09 PHP
thinkPHP5.0框架简单配置作用域的方法
Mar 17 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
Jan 04 PHP
UCenter中的一个可逆加密函数authcode函数代码
Jul 20 #PHP
PHP连接SQLServer2005 的问题解决方法
Jul 19 #PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 #PHP
ajax实现无刷新分页(php)
Jul 18 #PHP
php将会员数据导入到ucenter的代码
Jul 18 #PHP
php 无限级数据JSON格式及JS解析
Jul 17 #PHP
php下使用strpos需要注意 === 运算符
Jul 17 #PHP
You might like
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
php中require和require_once的区别说明
2014/02/27 PHP
php快递单号查询接口使用示例
2014/05/05 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
2015/08/25 PHP
深入解析PHP的Yii框架中的缓存功能
2016/03/29 PHP
php字符串操作常见问题小结
2016/10/11 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
2014/04/07 Javascript
js四舍五入数学函数round使用实例
2014/05/09 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
深入浅出vue图片路径的实现
2019/09/04 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
2019/10/12 jQuery
vuex存取值和映射函数使用说明
2020/07/24 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
python实现分页效果
2017/10/25 Python
python smtplib模块自动收发邮件功能(一)
2018/05/22 Python
python 实现UTC时间加减的方法
2018/12/31 Python
Django组件content-type使用方法详解
2019/07/19 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
如何在django中运行scrapy框架
2020/04/22 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
CSS3解决移动页面上点击链接触发色块的问题
2016/06/03 HTML / CSS
个人简历中的自我评价范例
2013/10/29 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
python入门之算法学习
2021/04/22 Python
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS