扫码关注官方订阅号
url后附带参数"c"的时候,$_REQUEST怎么取不到值呢?
但是如果把参数换成其他名字,比如大写的"C",就能取到值了。
请问是怎么回事?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
用的是thinkPHP吗?thinkPHP默认会提取GET参数中的c作为controller的名并以此为调度。你可以在config文件里更换VAR_CONTROLLER的值来选择其他参数作为controller名,这样就不会妨碍c参数的传递了。
thinkPHP
GET
c
controller
config
VAR_CONTROLLER
在thinkphp的框架中,请求分发部分需要解析m c a参数,解析后就从$_GET数组中删除了对应的参数path\to\ThinkPHP\Library\Think\Think.class.php
/** * 应用程序初始化 * @access public * @return void */ static public function start() { ... // 运行应用 App::run(); }
path\to\ThinkPHP\Library\Think\App.class.php
/** * 运行应用实例 入口文件使用的快捷方法 * @access public * @return void */ static public function run() { ... App::init(); ... }
/** * 应用程序初始化 * @access public * @return void */ static public function init() { ... // URL调度 Dispatcher::dispatch(); ...
path\to\ThinkPHP\Library\Think\Dispatcher.class.php
/** * URL映射到控制器 * @access public * @return void */ static public function dispatch() { ... // 获取模块名称 define('MODULE_NAME', defined('BIND_MODULE')? BIND_MODULE : self::getModule($varModule)); ... // 获取控制器的命名空间(路径) define('CONTROLLER_PATH', self::getSpace($varAddon,$urlCase)); // 获取控制器和操作名 define('CONTROLLER_NAME', defined('BIND_CONTROLLER')? BIND_CONTROLLER : self::getController($varController,$urlCase)); define('ACTION_NAME', defined('BIND_ACTION')? BIND_ACTION : self::getAction($varAction,$urlCase)); ...
/** * 获得实际的控制器名称 */ static private function getController($var,$urlCase) { ... $controller = (!empty($_GET[$var])? $_GET[$var]:C('DEFAULT_CONTROLLER')); unset($_GET[$var]); ... }
获取模块和操作方法的代码类似.
其实本来也不应该直接从$_GET中取数据,因为如果使用pathinfo的URL模式或者rewrite的URL模式的时候这些参数都不在$_GET中
你的截图里怎么是post?
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
用的是
thinkPHP吗?thinkPHP默认会提取GET参数中的c作为controller的名并以此为调度。你可以在config文件里更换VAR_CONTROLLER的值来选择其他参数作为controller名,这样就不会妨碍c参数的传递了。在thinkphp的框架中,请求分发部分需要解析m c a参数,解析后就从$_GET数组中删除了对应的参数
path\to\ThinkPHP\Library\Think\Think.class.php
path\to\ThinkPHP\Library\Think\App.class.php
path\to\ThinkPHP\Library\Think\Dispatcher.class.php
获取模块和操作方法的代码类似.
其实本来也不应该直接从$_GET中取数据,因为如果使用pathinfo的URL模式或者rewrite的URL模式的时候这些参数都不在$_GET中
你的截图里怎么是post?