我是靠谱客的博主 大意红牛,最近开发中收集的这篇文章主要介绍ThinkPHP 解析访问路径的坑,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

首先我得检讨:因为我的懒惰以及命名的不规范,踩到这个坑。
对于特殊需求你得单独想一个独特的命名而不能乱起名字。

使用 AJAX 以 POST 方式提交参数

a : "10001"
b : "10013"

http://localhost/market/index.php/home/resource/searchGroup

报错非法操作 10001。很奇怪是吧。

通过翻看 ThinkPHP 的源码找到问题所在

ThinkPHP/Library/Think/Dispatcher.class.php

在这个文件里找到 getAction 方法


/**
* 获得实际的操作名称
*/
static private function getAction($var,$urlCase) {
$action
= !empty($_POST[$var]) ?
$_POST[$var] :
(!empty($_GET[$var])?$_GET[$var]:C('DEFAULT_ACTION'));
unset($_POST[$var],$_GET[$var]);
if($maps = C('URL_ACTION_MAP')) {
if(isset($maps[strtolower(CONTROLLER_NAME)])) {
$maps =
$maps[strtolower(CONTROLLER_NAME)];
if(isset($maps[strtolower($action)])) {
// 记录当前别名
define('ACTION_ALIAS',strtolower($action));
// 获取实际的操作名
if(is_array($maps[ACTION_ALIAS])){
parse_str($maps[ACTION_ALIAS][1],$vars);
$_GET
=
array_merge($_GET,$vars);
return $maps[ACTION_ALIAS][0];
}else{
return $maps[ACTION_ALIAS];
}
}elseif(array_search(strtolower($action),$maps)){
// 禁止访问原始操作
return
'';
}
}
}
return strip_tags( $urlCase? strtolower($action) : $action );
}

ThinkPHP 是通过 getAction 方法来获取你 URL 里指定的方法名的。
打印 $var 得到

a
到这就知道问题出在哪里了,ThinkPHP 是通过给这个函数
传递 a 然后在$POST['a'] 或者 $_GET['a'] 里面
获得解析出来的你访问路径的操作名。又是一个懒人。你敲个 action 不行啊。
鉴于用的是人家的框架,我让路,参数名改为 groupA,妥妥的。

转载于:https://www.cnblogs.com/peterzha/p/6853248.html

最后

以上就是大意红牛为你收集整理的ThinkPHP 解析访问路径的坑的全部内容,希望文章能够帮你解决ThinkPHP 解析访问路径的坑所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部