Home > Backend Development > PHP Tutorial > get参数为什么取不到"c"?

get参数为什么取不到"c"?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-06 20:12:25
Original
1136 people have browsed it

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

get参数为什么取不到

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

get参数为什么取不到

请问是怎么回事?

回复内容:

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

get参数为什么取不到

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

get参数为什么取不到

请问是怎么回事?

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

在thinkphp的框架中,请求分发部分需要解析m c a参数,解析后就从$_GET数组中删除了对应的参数
path\to\ThinkPHP\Library\Think\Think.class.php

<code>    /**
     * 应用程序初始化
     * @access public
     * @return void
     */
    static public function start() {
        ...
        // 运行应用
      App::run();
    }</code>
Copy after login

path\to\ThinkPHP\Library\Think\App.class.php

<code>    /**
     * 运行应用实例 入口文件使用的快捷方法
     * @access public
     * @return void
     */
    static public function run() {
        ...
        App::init();
        ...
    }</code>
Copy after login
<code>    /**
     * 应用程序初始化
     * @access public
     * @return void
     */
    static public function init() {
        ...
        // URL调度
        Dispatcher::dispatch();
        ...</code>
Copy after login

path\to\ThinkPHP\Library\Think\Dispatcher.class.php

<code>    /**
     * 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));
        ...</code>
Copy after login
<code>    /**
     * 获得实际的控制器名称
     */
    static private function getController($var,$urlCase) {
        ...
        $controller = (!empty($_GET[$var])? $_GET[$var]:C('DEFAULT_CONTROLLER'));
        unset($_GET[$var]);
        ...
    }</code>
Copy after login

获取模块和操作方法的代码类似.

其实本来也不应该直接从$_GET中取数据,因为如果使用pathinfo的URL模式或者rewrite的URL模式的时候这些参数都不在$_GET中

你的截图里怎么是post?

Related labels:
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Issues
php data acquisition?
From 1970-01-01 08:00:00
0
0
0
PHP extension intl
From 1970-01-01 08:00:00
0
0
0
How to learn php well
From 1970-01-01 08:00:00
0
0
0
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template