就是根据传参转到指定页面的一个程序。这里面有两个判断,一是判断必要的参数是否成功传了过来;二是判断指定的目录是在根目录下,还是在app这个目录下;
最后根据判断的结果跳转到对应的页面。

解决方案 »

  1.   

    不明白就对了,因为这段代码并没有根据 $_GET['c'] 做出选择性动作(那是在 FCPATH.'index.php' 中完成的)
    这段代码只是根据 $_GET['s'] 选择应该进入的项目
    而你测试的两个 url :
    index.php?c=register&m=index 
    index.php?c=login&m=index
    均没有 s 参数
      

  2.   

    还是不明白他的参数是怎么传递的,require FCPATH.'index.php'; 这个文件具体指的是哪个目录下的index.php
      

  3.   

    define('FCPATH', dirname(dirname(__FILE__)).'/'); 
    当前文件的上级目录
    $fn = 'templates/member/default/register.html';
    echo dirname($fn); // templates/member/default
    echo dirname(dirname($fn)); // templates/member
      

  4.   

    我就是想找到接收参数和判断参数的代码在哪?FCPATH.'index.php'是这个文件吗,这个文件具体目录是哪?
      

  5.   

    你打印出了来看看不就知道了?
    echo FCPATH.'index.php';
      

  6.   


    打印结果是:
    /data/home/hmu153001/htdocs/index.php Warning: Cannot modify header information - headers already sent by (output started at /data/home/hmu153001/htdocs/member/index.php:31) in /data/home/hmu153001/htdocs/index.php on line 12
    这好像只是文件路径 引用了/htdocs/index.php 这个文件
    /htdocs/index.php 这个文件源码为:
    <?php
    header('Content-Type: text/html; charset=utf-8');
    error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
    // 显示错误提示
    if (function_exists('ini_set')) {
        ini_set('display_errors', TRUE);
        ini_set('memory_limit', '1024M');
    }
    // 查询执行超时时间
    if (function_exists('set_time_limit')) {
        set_time_limit(0);
    }
    // 该文件的名称
    if (!defined('SELF')) {
        define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME));
    }
    // 网站根目录
    if (!defined('FCPATH')) {
        define('FCPATH', str_replace(SELF, '', __FILE__));
    }if (PHP_SAPI === 'cli' || defined('STDIN')) {
        unset($_GET);
        $_GET['c'] = 'cron';
        $_GET['m'] = 'index';
        chdir(dirname(__FILE__));
    }define('EXT', '.php');
    define('BASEPATH', FCPATH . 'dayrui/system/');
    define('SYSDIR', 'system'); // 判断s参数,“应用程序”文件夹目录
    if (!defined('APP_DIR') && isset($_GET['s'])
        && preg_match('/^[a-z]+$/i', $_GET['s'])
        && is_dir(FCPATH . 'app/' . $_GET['s'] . '/')) {
        define('APPPATH', FCPATH . 'app/' . $_GET['s'] . '/');
        define('APP_DIR', $_GET['s']);
    }$temp = $uri = isset($_SERVER['HTTP_X_REWRITE_URL']) && trim($_SERVER['REQUEST_URI'], '/') == SELF ? trim($_SERVER['HTTP_X_REWRITE_URL'], '/') : ($_SERVER['REQUEST_URI'] ? trim($_SERVER['REQUEST_URI'], '/') : NULL);
    if ($uri) {
        if (strpos($uri, '?') !== FALSE) {
            $uri = explode('?', $uri);
            $uri = $uri[0];
        }
        if (strpos($uri, SELF) === FALSE
            && !file_exists(FCPATH . $uri)) {
            if (strpos($uri, '/') !== FALSE) {
                $uri = explode('/', $uri);
                if (is_dir(FCPATH . $uri[0])) {
                    define('APPPATH', FCPATH . $uri[0] . '/');
                    define('APP_DIR', $uri[0]); // 模块目录名称
                    unset($uri[0]);
                }
                define('DR_URI', implode('/', $uri)); // 组合URI
            } else {
                define('DR_URI', $uri); // URI
            }
        }
    }
    if (!defined('APP_DIR')) {
        define('APP_DIR', '');
    }if (!defined('IS_ADMIN')) {
        define('IS_ADMIN', FALSE);
    }if (!defined('IS_MEMBER')) {
        define('IS_MEMBER', FALSE);
    }
    // “应用程序”文件夹目录
    if (!defined('APPPATH')) {
        define('APPPATH', FCPATH . 'dayrui/');
    }define('VIEWPATH', FCPATH . 'dayrui/'); 
    define('ENVIRONMENT', FCPATH . 'config');
    if (!IS_ADMIN && !IS_MEMBER && isset($_GET['d'])) {
        unset($_GET['d']);
    }require BASEPATH . 'core/CodeIgniter.php'; // 
    还是看不明白哪里是接收处理参数的代码
      

  7.   

    最后执行的是
    require BASEPATH . 'core/CodeIgniter.php';
    当然在这个里面啦总之你的找到处理 $_GET['c'] 的地方