1,
通常我们会在根目录下,建立两个文件,index.php admin.php
我们通过在index.php 和 admin.php分别定义APP_NAME常量来实现
2,判断用户有没有输入 c 和 a ,以及自己定制默认的控制器和 默认的动作
3,防止非法访问
要区分出前台和后台,index.php展示是前台;admin.php展示的是后台
思路:
我们通常在入口文件定义一个常量(在整个页面都起作用),如果index.php加载init.php的话,常量的值是home/
例如,当我们在地址栏输入index.php的时候,
<?php
//通常我们定义一个常量作为标记,常量在整个页面都起作用
define("APP_NAME","home/");
//定义一个常量,define('常量名','常量值');判断常量是否被定义defined("常量名")
require "init.php";
然后,当我们实例化smarty对象,设置smarty的模板目录的时候,
$this -> smarty ->template_dir = ROOT_PATH."views/".APP_NAME;
这时,smarty会调用home(前台的木板文件)
Admin一样的道理
如何定义当我们没有在地址栏输入c和a的时候的一个默认页面?
if(isset($_REQUEST['c'])){
$controller_name = $_REQUEST['c'].'Controller';
}else{
if(APP_NAME =="home/"){
$controller_name = "indexController";
}else if(APP_NAME =="admin/"){
$controller_name = "adminController";
}
}
$controller = new $controller_name();
//规定默认的动作
if(isset($_REQUEST['a'])){
$action_name = $_REQUEST['a'].'Action';
}else{
if(APP_NAME =="home/"){
$action_name = "indexAction";
}else if(APP_NAME =="admin/"){
$action_name = "adminAction";
}
}
$controller ->$action_name();
最后一点:防止非法访问
如果不是通过index.php或者admin.php来访问,我们认为就是非法访问
短路算法:
|| 或运算,有一个条件成立 就为真
&& 与运算,必须两个条件都为真,才成立