ThinkPHP中url隐藏入口文件后接收alipay传值的方法


Posted in PHP onDecember 09, 2014

本文实例讲述了ThinkPHP中url隐藏入口文件后接收alipay传值的方法。分享给大家供大家参考。具体方法如下:

现在公司项目的需求变化多端,项目使用的是Thinkphp2.0,而conf.php中设置的URL_MODEL=2,为了兼容.htaccess和隐藏index.php,但在使用一些第三方接口时(例如支付宝或MSN开放平台),他们返回的参数往往含有一个?号,而URL_MODEL=2时,TP会自动将含有?的URL进行转换.

转换前:http://www.xxx.com/index.php/alipay/callback/?is_success/T/sign_type/MD5/notify_id/RqPnCoPT3K9/vwbh3I

转换后:http://www.xxx.com/alipay/callback/is_success/T/sign_type/MD5/notify_id/RqPnCoPT3K9/vwbh3I

转换后的网址将无法访问,而转换前的网址是可以访问的,这时需要临时针对alipay这个控制器,URL_MODEL=1,但在该控制器里C('URL_MODEL',1)是没有用的,因为TP会在入口文件App::run()时直接404了.

想了很多方法,先是修改它的配置文件Conf.php,结果发现会生成缓存文件~app.php,所以必须根据情况删除这个缓存文件,于是我对index.php入口文件进行了修改(事实上,放在任何App::run()之前都可以,你可以自行封装).

PHP实例代码:

<?php  

// 定义ThinkPHP框架路径  

define('THINK_PATH', '不告诉你我的TP文件夹名/');  

//如果网址中存在这样的形式就删除缓存配置文件,并创建一个标识  

if(strstr($_SERVER['REQUEST_URI'],'alipay/callback/')||strstr($_SERVER['REQUEST_URI'],'order.return_pay')){  

    unlink('./home/Runtime/~app.php');  

    //创建一个缓存文件做为标识  

    $fn= fopen('./home/Runtime/re_url_model.php','wb');  

    fclose($fn);  

}elseif(file_exists('./home/Runtime/re_url_model.php')){  

    unlink('./home/Runtime/re_url_model.php');  

    unlink('./home/Runtime/~app.php');  

}  

  

//定义项目名称和路径  

define('APP_NAME', 'home');  

  

define('APP_PATH', 'home');  

  

// 加载框架入口文件  

  

require(THINK_PATH."ThinkPHP.php");  

  

//实例化一个网站应用实例  

App::run();  

?>

项目的配置文件Conf.php根据你自己的情况做一个判断即可.

PHP实例源码:

//兼容支付宝快捷登录的?请求  

if(strstr($_SERVER['REQUEST_URI'],'alipay/callback/')||strstr($_SERVER['REQUEST_URI'],'order.return_pay')){  

    $my_array['URL_MODEL'] = 1;  

}  

return $my_array;

这样,访问www.xxx.com或www.xxx.com/shipin/等任何非alipay控制器的页面时,网站依然是使用url_model = 2来隐藏index.php,使得URL友好.

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP语法速查表
Jan 02 PHP
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
Jan 15 PHP
PHP 字符串 小常识
Jun 05 PHP
PHP高级OOP技术演示
Aug 27 PHP
php中$_GET与$_POST过滤sql注入的方法
Nov 03 PHP
php正则表达式获取内容所有链接
Jul 24 PHP
学习php设计模式 php实现抽象工厂模式
Dec 07 PHP
PHP版单点登陆实现方案的实例
Nov 17 PHP
php中strtotime函数性能分析
Nov 20 PHP
php自定义扩展名获取函数示例
Dec 12 PHP
php中通过eval实现字符串格式的计算公式
Mar 18 PHP
Laravel 连接(Join)示例
Oct 16 PHP
php生成shtml类用法实例
Dec 09 #PHP
thinkphp文件处理类Dir.class.php的用法分析
Dec 08 #PHP
php中adodbzip类实例
Dec 08 #PHP
php中Array2xml类实现数组转化成XML实例
Dec 08 #PHP
PHP内存缓存Memcached类实例
Dec 08 #PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 #PHP
PHP模块memcached使用指南
Dec 08 #PHP
You might like
Terran热键控制
2020/03/14 星际争霸
php实现的一个很好用HTML解析器类可用于采集数据
2013/09/23 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
js实现简单锁屏功能实例
2015/05/27 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
JS实现改变HTML上文字颜色和内容的方法
2016/12/30 Javascript
微信小程序获取手机号授权用户登录功能
2017/11/09 Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
2018/01/16 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
进一步理解Python中的函数编程
2015/04/13 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
学python需要去培训机构吗
2020/07/01 Python
python获取整个网页源码的方法
2020/08/03 Python
利用Python的folium包绘制城市道路图的实现示例
2020/08/24 Python
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
保荐人的岗位职责
2013/11/19 职场文书
小学教研工作制度
2014/01/15 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
元宵节主持词
2014/03/25 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
大学生毕业评语
2014/12/31 职场文书
个人年终总结怎么写
2015/03/09 职场文书
Flask response响应的具体使用
2021/07/15 Python