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 魔术方法使用说明
Oct 20 PHP
PHP5常用函数列表(分享)
Jun 07 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
set_exception_handler函数在ThinkPHP中的用法
Oct 31 PHP
php获取字符串中各个字符出现次数的方法
Feb 23 PHP
PHP实现从远程下载文件的方法
Mar 12 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
May 16 PHP
教你在header中隐藏php的版本信息
Aug 10 PHP
Yii2语言国际化自动配置详解
Aug 22 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
May 21 PHP
Laravel实现通过blade模板引擎渲染视图
Oct 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 JSON格式的中文显示问题解决方法
2015/04/09 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
Javascript模块模式分析
2008/05/16 Javascript
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
JavaScript获取某年某月的最后一天附截图
2014/06/23 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
2015/05/19 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
vuex直接赋值的三种方法总结
2018/09/16 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
vue实现带过渡效果的下拉菜单功能
2020/02/19 Javascript
Vue+Vuex实现自动登录的知识点详解
2020/03/04 Javascript
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
python实现获取序列中最小的几个元素
2014/09/25 Python
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
Python正则表达式完全指南
2017/05/25 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
python热力图实现简单方法
2021/01/29 Python
纽约现代艺术博物馆商店:MoMA STORE(室内家具和杂货商品)
2016/08/02 全球购物
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
后备干部考察材料
2014/02/12 职场文书
社区矫正工作方案
2014/06/04 职场文书
营销经理工作检讨书
2014/11/03 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
思想政治表现评语
2015/01/04 职场文书
匿名检举信范文
2015/03/02 职场文书
停电通知范文
2015/04/16 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书
欢送领导祝酒词
2015/08/12 职场文书
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
2022/02/12 Servers
pandas中关于apply+lambda的应用
2022/02/28 Python