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图片上传程序
Mar 27 PHP
Ha0k 0.3 PHP 网页木马修改版
Oct 11 PHP
php函数之子字符串替换&amp;#65279; str_replace
Mar 23 PHP
php 数组使用详解 推荐
Jun 02 PHP
php 获取页面中指定内容的实现类
Jan 23 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
Jul 24 PHP
Windows下的PHP安装pear教程
Oct 24 PHP
PHP根据图片色界在不同位置加水印的方法
Jul 01 PHP
PHP实现权限管理功能示例
Sep 22 PHP
在laravel5.2中实现点击用户头像更改头像的方法
Oct 14 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 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
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
PHP生成静态页面详解
2006/11/19 PHP
cmd下运行php脚本
2008/11/25 PHP
php小技巧 把数组的键和值交换形成了新的数组,查找值取得键
2011/06/02 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
2016/01/05 PHP
php生成mysql的数据字典
2016/07/07 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
PHP CURL使用详解
2019/03/21 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
ExtJs的Date格式字符代码
2010/12/30 Javascript
js中匿名函数的创建与调用方法分析
2014/12/19 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
JS简单获取当前年月日星期的方法示例
2017/02/07 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
使用AngularJS2中的指令实现按钮的切换效果
2017/03/27 Javascript
基于vue+canvas的excel-like组件实例详解
2017/11/28 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
react-native封装插件swiper的使用方法
2018/03/20 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
2019/02/22 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
2020/12/10 Javascript
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
python滑块验证码的破解实现
2019/11/10 Python
python中的垃圾回收(GC)机制
2020/09/21 Python
私有程序集与共享程序集有什么区别
2013/04/05 面试题
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
大学旷课检讨书
2014/01/28 职场文书
聘任书模板
2014/03/29 职场文书
学校花圃的标语
2014/06/18 职场文书
安全标兵事迹材料
2014/08/17 职场文书
毕业生个人总结
2015/02/28 职场文书