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 各种排序算法实现代码
Aug 20 PHP
php 多线程上下文中安全写文件实现代码
Dec 28 PHP
有关PHP中MVC的开发经验分享
May 17 PHP
php实现按文件名搜索文件的远程文件查找器
May 10 PHP
PHP函数实现分页含文本分页和数字分页
Oct 23 PHP
Laravel实现用户注册和登录
Jan 23 PHP
深入理解PHP中的count函数
May 31 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
php中的抽象方法和抽象类
Feb 14 PHP
PHP获取二叉树镜像的方法
Jan 17 PHP
PHP html_entity_decode()函数讲解
Feb 25 PHP
PHP如何开启Opcache功能提升程序处理效率
Apr 27 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
PHP判断远程url是否有效的几种方法小结
2011/10/08 PHP
PDO防注入原理分析以及注意事项
2015/02/25 PHP
PHP扩展开发入门教程
2015/02/26 PHP
Joomla简单判断用户是否登录的方法
2016/05/04 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
jQuery EasyUI之DataGrid使用实例详解
2016/01/04 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
Vue DevTools调试工具的使用
2017/12/05 Javascript
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
JS实现换肤功能的方法实例详解
2019/01/30 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
python实现简单socket通信的方法
2016/04/19 Python
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
Python jieba库分词模式实例用法
2021/01/13 Python
Python用SSH连接到网络设备
2021/02/18 Python
小学生检讨书大全
2014/02/06 职场文书
党性心得体会
2014/09/03 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
管辖权异议上诉状
2015/05/23 职场文书
2015年小学语文教学工作总结
2015/05/25 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书
Django中session进行权限管理的使用
2021/07/09 Python
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python
「魔法少女伊莉雅」美游粘土人开订
2022/03/21 日漫
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技