php - get参数为什么取不到"c"?
高洛峰
高洛峰 2017-04-10 17:12:32
[PHP讨论组]

url后附带参数"c"的时候,$_REQUEST怎么取不到值呢?

但是如果把参数换成其他名字,比如大写的"C",就能取到值了。

请问是怎么回事?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
黄舟

用的是thinkPHP吗?thinkPHP默认会提取GET参数中的c作为controller的名并以此为调度。你可以在config文件里更换VAR_CONTROLLER的值来选择其他参数作为controller名,这样就不会妨碍c参数的传递了。

PHPz

在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?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号