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 相关文章推荐
Apache2 httpd.conf 中文版
Nov 17 PHP
彻底杜绝PHP的session cookie错误
Aug 09 PHP
php多文件上传功能实现原理及代码
Apr 18 PHP
php中将数组转成字符串并保存到数据库中的函数代码
Sep 29 PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 PHP
主流PHP框架的优缺点对比分析
Dec 25 PHP
PHP实现股票趋势图和柱形图
Feb 07 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
Mar 31 PHP
php中array_column函数简单实现方法
Jul 11 PHP
利用PHPExcel实现Excel文件的写入和读取
Apr 26 PHP
浅析PHP中的闭包和匿名函数
Dec 25 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 VS ASP
2006/10/09 PHP
php中计算中文字符串长度、截取中文字符串的函数代码
2011/08/09 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
php简单判断两个字符串是否相等的方法
2015/07/13 PHP
php实现购物车产品删除功能(2)
2020/07/23 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
插件:检测javascript的内存泄漏
2007/03/04 Javascript
javascript 清除输入框中的数据
2009/04/13 Javascript
jQuery select控制插件
2009/08/17 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
Javascript实现div的toggle效果实例分析
2015/06/09 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
2015/08/11 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
2017/02/15 Javascript
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
vue组件入门知识全梳理
2020/09/21 Javascript
Python写的贪吃蛇游戏例子
2014/06/16 Python
自己使用总结Python程序代码片段
2015/06/02 Python
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
python装饰器初探(推荐)
2016/07/21 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
对Python3 * 和 ** 运算符详解
2019/02/16 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
安全资料员岗位职责
2013/12/14 职场文书
模范班主任事迹材料
2014/12/17 职场文书
详解python的异常捕获
2022/03/03 Python