请php大师详细解说下面代码具体流程 就是根据传参转到指定页面的一个程序。这里面有两个判断,一是判断必要的参数是否成功传了过来;二是判断指定的目录是在根目录下,还是在app这个目录下;最后根据判断的结果跳转到对应的页面。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不明白就对了,因为这段代码并没有根据 $_GET['c'] 做出选择性动作(那是在 FCPATH.'index.php' 中完成的)这段代码只是根据 $_GET['s'] 选择应该进入的项目而你测试的两个 url :index.php?c=register&m=index index.php?c=login&m=index均没有 s 参数 还是不明白他的参数是怎么传递的,require FCPATH.'index.php'; 这个文件具体指的是哪个目录下的index.php define('FCPATH', dirname(dirname(__FILE__)).'/'); 当前文件的上级目录$fn = 'templates/member/default/register.html';echo dirname($fn); // templates/member/defaultecho dirname(dirname($fn)); // templates/member 我就是想找到接收参数和判断参数的代码在哪?FCPATH.'index.php'是这个文件吗,这个文件具体目录是哪? 你打印出了来看看不就知道了?echo FCPATH.'index.php'; 打印结果是:/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 这个文件源码为:<?phpheader('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'; // 还是看不明白哪里是接收处理参数的代码 最后执行的是require BASEPATH . 'core/CodeIgniter.php';当然在这个里面啦总之你的找到处理 $_GET['c'] 的地方 how to install libflashplayer.so folder? 本地用自己的ip不能访问 求一个php下载的方法,求大家帮帮忙~~~ mkdir 如何不打印警告? session的问题。希望大家帮忙。绝望中 warning 可以改成抛出异常么 求一段简化的正侧表达式,可以这样替换文件 大家帮我看看是什么问题?? 访问MYSQL的问题 关于重定向2?~~ 这样为啥能隐藏入口文件呢 PHP函数内while 循环无效
这段代码只是根据 $_GET['s'] 选择应该进入的项目
而你测试的两个 url :
index.php?c=register&m=index
index.php?c=login&m=index
均没有 s 参数
当前文件的上级目录
$fn = 'templates/member/default/register.html';
echo dirname($fn); // templates/member/default
echo dirname(dirname($fn)); // templates/member
echo FCPATH.'index.php';
打印结果是:
/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'; //
还是看不明白哪里是接收处理参数的代码
require BASEPATH . 'core/CodeIgniter.php';
当然在这个里面啦总之你的找到处理 $_GET['c'] 的地方