请php宗师详细解说下面代码具体流程
程序员文章站
2022-05-21 15:50:30
...
请php大师详细解说下面代码具体流程
文件名:index.php (根目录下)
代码如下:
define('IS_MEMBER', TRUE);
define('FCPATH', dirname(dirname(__FILE__)).'/');
if (isset($_GET['s']) && preg_match('/^[a-z]+$/i', $_GET['s']) && $_GET['s'] != 'member') {
if (is_dir(FCPATH.$_GET['s'])) {
define('APPPATH', FCPATH.$_GET['s'].'/');
define('APP_DIR', $_GET['s']);
$_GET['d'] = 'member';
} elseif (is_dir(FCPATH.'app/'.$_GET['s'].'/')) {
define('APPPATH', FCPATH.'app/'.$_GET['s'].'/');
define('APP_DIR', $_GET['s']);
$_GET['d'] = 'member';
}
}
if (!defined('APPPATH')) define('APPPATH', dirname(__FILE__).'/');
require FCPATH.'index.php';
整个php文件代码就是些,到此无下文
当参数为:index.php?c=register&m=index 时程序开始显示 根目录下/templates\member\default\register.html 内容
当参数为:index.php?c=login&m=index 时程序开始显示 根目录下/templates\member\default\login.html 内容
参数变化时只显html文件里的内容,地址栏地址不变还是index.php?c=xxxx&m=index 只是参数再变化
我不明白这么几行代码是怎么个流程,为什么会显示html里的文件内容
请php大师详细解说下面代码每一句的具体流程,非常感谢!
------解决思路----------------------
就是根据传参转到指定页面的一个程序。
这里面有两个判断,一是判断必要的参数是否成功传了过来;二是判断指定的目录是在根目录下,还是在app这个目录下;
最后根据判断的结果跳转到对应的页面。
------解决思路----------------------
不明白就对了,因为这段代码并没有根据 $_GET['c'] 做出选择性动作(那是在 FCPATH.'index.php' 中完成的)
这段代码只是根据 $_GET['s'] 选择应该进入的项目
而你测试的两个 url :
index.php?c=register&m=index
index.php?c=login&m=index
均没有 s 参数
------解决思路----------------------
define('FCPATH', dirname(dirname(__FILE__)).'/');
当前文件的上级目录
------解决思路----------------------
你打印出了来看看不就知道了?
echo FCPATH.'index.php';
------解决思路----------------------
最后执行的是
require BASEPATH . 'core/CodeIgniter.php';
当然在这个里面啦
总之你的找到处理 $_GET['c'] 的地方
文件名:index.php (根目录下)
代码如下:
define('IS_MEMBER', TRUE);
define('FCPATH', dirname(dirname(__FILE__)).'/');
if (isset($_GET['s']) && preg_match('/^[a-z]+$/i', $_GET['s']) && $_GET['s'] != 'member') {
if (is_dir(FCPATH.$_GET['s'])) {
define('APPPATH', FCPATH.$_GET['s'].'/');
define('APP_DIR', $_GET['s']);
$_GET['d'] = 'member';
} elseif (is_dir(FCPATH.'app/'.$_GET['s'].'/')) {
define('APPPATH', FCPATH.'app/'.$_GET['s'].'/');
define('APP_DIR', $_GET['s']);
$_GET['d'] = 'member';
}
}
if (!defined('APPPATH')) define('APPPATH', dirname(__FILE__).'/');
require FCPATH.'index.php';
整个php文件代码就是些,到此无下文
当参数为:index.php?c=register&m=index 时程序开始显示 根目录下/templates\member\default\register.html 内容
当参数为:index.php?c=login&m=index 时程序开始显示 根目录下/templates\member\default\login.html 内容
参数变化时只显html文件里的内容,地址栏地址不变还是index.php?c=xxxx&m=index 只是参数再变化
我不明白这么几行代码是怎么个流程,为什么会显示html里的文件内容
请php大师详细解说下面代码每一句的具体流程,非常感谢!
------解决思路----------------------
就是根据传参转到指定页面的一个程序。
这里面有两个判断,一是判断必要的参数是否成功传了过来;二是判断指定的目录是在根目录下,还是在app这个目录下;
最后根据判断的结果跳转到对应的页面。
------解决思路----------------------
不明白就对了,因为这段代码并没有根据 $_GET['c'] 做出选择性动作(那是在 FCPATH.'index.php' 中完成的)
这段代码只是根据 $_GET['s'] 选择应该进入的项目
而你测试的两个 url :
index.php?c=register&m=index
index.php?c=login&m=index
均没有 s 参数
------解决思路----------------------
define('FCPATH', dirname(dirname(__FILE__)).'/');
当前文件的上级目录
$fn = 'templates/member/default/register.html';
echo dirname($fn); // templates/member/default
echo dirname(dirname($fn)); // templates/member
------解决思路----------------------
你打印出了来看看不就知道了?
echo FCPATH.'index.php';
------解决思路----------------------
最后执行的是
require BASEPATH . 'core/CodeIgniter.php';
当然在这个里面啦
总之你的找到处理 $_GET['c'] 的地方
相关文章
相关视频
上一篇: php超链接常用的正则表达式