002thinkphp获取项目信息
Posted 陈三
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了002thinkphp获取项目信息相关的知识,希望对你有一定的参考价值。
先来介绍下Thinkphp获取URL的变量:
echo \'网站根目录地址:\'.__ROOT__.\'<br/>\';
echo \'当前项目(入口文件)地址:\'.__APP__.\'<br/>\';
echo \'当前分组地址:\'.__GROUP__.\'<br/>\';
echo \'当前模块地址:\'.__URL__.\'<br/>\';
echo \'当前操作地址:\'.__ACTION__.\'<br/>\';
echo \'当前 URL 地址:\'.__SELF__.\'<br/>\';
echo \'当前操作名称:\'.ACTION_NAME.\'<br/>\';
echo \'当前项目目录:\'.APP_PATH.\'<br/>\';
echo \'当前项目名称:\'.APP_NAME.\'<br/>\';
圈起的三个无法获取;
echo $_SERVER["REQUEST_SCHEME"].\'://\'.$_SERVER["SERVER_NAME"].\':\'.$_SERVER[\'SERVER_PORT\'].$_SERVER["REQUEST_URI"];
结果(模板页):http://localhost:80/ackonphp/index/loginOut.html
结果(操作名全称):http://localhost:80/ackonphp/home/index/testconn
echo $_SERVER[\'HTTP_HOST\'].\'<br/>\';
echo $_SERVER[\'SCRIPT_NAME\'].\'<br/>\';
echo $_SERVER[\'PATH_INFO\'].\'<br/>\';
echo $_SERVER[\'QUERY_STRING\'].\'<br/>\';
echo $_SERVER[\'PHP_SELF\'].\'<br/>\';
$_SERVER[\'QUERY_STRING\']无效;
==================================
下面正式介绍ThinkPHP拦截器功能
class AdminController extends Controller { /** * 后台控制器初始化 */ public function _initialize(){ $this->isLogin(); } public function isLogin(){ /** *操作前进行拦截,session不存在则返回登录页 *在Common模块/Conf/config.php配置不拦截的内容 */ $array=C(\'LOGIN_CHECK\');//不拦截的路径 $url=__ACTION__;//当前路径 if(!in_array($url, $array)){ if(!session(\'loginUser\')){ $this->display(\'/login\'); } } } public function _empty(){ try{ if(method_exists($this,"actions")){ //内容省略 }else{ throw new \\Think\\Exception("未定义动作类绑定"); } }catch(Exception $e){ send_http_status(\'404\');//action不存在或动作类不合法,抛出404 } } }
LOGIN_CHECK在config.php中进行指定
//拦截器,不拦截操作 \'LOGIN_CHECK\'=>array( __ROOT__.\'/Home/Index/login\', __ROOT__.\'/Home/Index/loginOut\', ),
这样在每个方法前会自动去判断session,session不存在返回登录页;
问题来了,当空操作就会在页面返回登录页,后面继续执行 _empty()里的内容;
_empty()里的内容被追加在登录页;
且
http://localhost/ackonphp/home/index/testconn这个路径在拦截后进入登录页,但此路径的内容仍被执行,追加在登录页后;
自动执行session判断达不到相应
if(!session(\'loginUser\')){
return;
}
来阻止程序继续执行;
问题在于一旦session不存在应该直接进入登录页,后续操作终止;
这是由于thinkphp处理机制的问题,那么只能选择手工调用判断session的方法了。
以上是关于002thinkphp获取项目信息的主要内容,如果未能解决你的问题,请参考以下文章
基于ThinkPHP框架小程序获取微信用户信息并将存进数据库