1.项目框架
|--mvc
|--data 数据
|--cache 缓存
|--template_c 模板生成目录
|--framework
|--function
|--libs
|--core
|--db
|--view
|--Smarty smarty核心文件
|--html
|--img
|--libs
|--controller
|--model
2.function.php 功能类
function daddslashes($str){return (!get_magic_quotes_gpc())?addslashes($str):$str;
}
3.DB.class.php 数据库工具类
classDB {public static $db;public static function init($dbtype, $config) {
self::$db = new $dbtype;
self::$db->connect($config);
}public static function query($sql){return self::$db->query($sql);
}public static function findAll($sql){$query = self::$db->query($sql);return self::$db->findAll($query);
}public static function findOne($sql){$query = self::$db->query($sql);return self::$db->findOne($query);
}public static function findResult($sql, $row = 0, $filed = 0){$query = self::$db->query($sql);return self::$db->findResult($query, $row, $filed);
}public static function insert($table,$arr){return self::$db->insert($table,$arr);
}public static function update($table, $arr, $where){return self::$db->update($table, $arr, $where);
}public static function del($table,$where){return self::$db->del($table,$where);
}
}
4.VIEW.class.php 视图工具类
classVIEW {public static $view;public static function init($viewtype,$config){
self::$view = new $viewtype;/*$smarty = new Smarty();//实例化smarty
$smarty->left_delimiter=$config["left_delimiter"];//左定界符
$smarty->right_delimiter=$config["right_delimiter"];//右定界符
$smarty->template_dir=$config["template_dir"];//html模板的地址
$smarty->compile_dir=$config["compile_dir"];//模板编译生成的文件
$smarty->cache_dir=$config["cache_dir"];//缓存*/
foreach($config as $key=>$value){
self::$view -> $key = $value;
}
}public static function assign($data){foreach($data as $key=>$value){
self::$view->assign($key, $value);
}
}public static function display($template){
self::$view->display($template);
}
}
5.mysql.class.php mysql工具类
/**
* 报错函数
*
* @param string $error*/
function err($error){die("对不起,您的操作有误,错误原因为:".$error);//die有两种作用 输出 和 终止 相当于 echo 和 exit 的组合
}/**
* 连接数据库
*
* @param string $dbhost 主机名
* @param string $dbuser 用户名
* @param string $dbpsw 密码
* @param string $dbname 数据库名
* @param string $dbcharset 字符集/编码
* @return bool 连接成功或不成功
**/
function connect($config){extract($config);if(!($con = mysql_connect($dbhost,$dbuser,$dbpsw))){//mysql_connect连接数据库函数
$this->err(mysql_error());
}if(!mysql_select_db($dbname,$con)){//mysql_select_db选择库的函数
$this->err(mysql_error());
}mysql_query("set names ".$dbcharset);//使用mysql_query 设置编码 格式:mysql_query("set names utf8")
}/**
* 执行sql语句
*
* @param string $sql
* @return bool 返回执行成功、资源或执行失败*/
function query($sql){if(!($query = mysql_query($sql))){//使用mysql_query函数执行sql语句
$this->err($sql."
".mysql_error());//mysql_error 报错
}else{return $query;
}
}/**
*列表
*
*@param source $query sql语句通过mysql_query 执行出来的资源
*@return array 返回列表数组
**/
function findAll($query){while($rs=mysql_fetch_array($query, MYSQL_ASSOC)){//mysql_fetch_array函数把资源转换为数组,一次转换出一行出来
$list[]=$rs;
}return isset($list)?$list:"";
}/**
*单条
*
*@param source $query sql语句通过mysql_query执行出的来的资源
*return array 返回单条信息数组
**/
function findOne($query){$rs = mysql_fetch_array($query,MYSQL_ASSOC);return $rs;
}/**
*指定行的指定字段的值
*
*@param source $query sql语句通过mysql_query执行出的来的资源
*return array 返回指定行的指定字段的值
**/
function findResult($query, $row = 0, $filed = 0){$rs = mysql_result($query, $row, $filed);return $rs;
}/**
* 添加函数
*
* @param string $table 表名
* @param array $arr 添加数组(包含字段和值的一维数组)
**/
function insert($table,$arr){//$sql = "insert into 表名(多个字段) values(多个值)";
foreach($arr as $key=>$value){//foreach循环数组
$value = mysql_real_escape_string($value);$keyArr[] = "`".$key."`";//把$arr数组当中的键名保存到$keyArr数组当中
$valueArr[] = "'".$value."'";//把$arr数组当中的键值保存到$valueArr当中,因为值多为字符串,而sql语句里面insert当中如果值是字符串的话要加单引号,所以这个地方要加上单引号
}$keys = implode(",",$keyArr);//implode函数是把数组组合成字符串 implode(分隔符,数组)
$values = implode(",",$valueArr);$sql = "insert into ".$table."(".$keys.") values(".$values.")";//sql的插入语句 格式:insert into 表(多个字段)values(多个值)
$this->query($sql);//调用类自身的query(执行)方法执行这条sql语句 注:$this指代自身
return mysql_insert_id();
}/**
*修改函数
*
*@param string $table 表名
*@param array $arr 修改数组(包含字段和值的一维数组)
*@param string $where 条件
**/
function update($table,$arr,$where){//update 表名 set 字段=字段值 where ……
foreach($arr as $key=>$value){$value = mysql_real_escape_string($value);$keyAndvalueArr[] = "`".$key."`='".$value."'";
}$keyAndvalues = implode(",",$keyAndvalueArr);$sql = "update ".$table." set ".$keyAndvalues." where ".$where;//修改操作 格式 update 表名 set 字段=值 where 条件
$this->query($sql);
}/**
*删除函数
*
*@param string $table 表名
*@param string $where 条件
**/
function del($table,$where){$sql = "delete from ".$table." where ".$where;//删除sql语句 格式:delete from 表名 where 条件
$this->query($sql);
}
}
6.include.list.php 统一导入php数组
$paths = array('function/function.php',
'libs/core/DB.class.php',
'libs/core/VIEW.class.php',
'libs/db/mysql.class.php',
'libs/view/Smarty/Smarty.class.php');
7.pc.php 统一初始化
$currentdir = dirname(__FILE__);include_once($currentdir.'/include.list.php');foreach($paths as $path){include_once($currentdir.'/'.$path);
}classPC{public static $controller;public static $method;private static $config;private static functioninit_db(){
DB::init('mysql', self::$config['dbconfig']);
}private static functioninit_view(){
VIEW::init('Smarty', self::$config['viewconfig']);
}private static functioninit_controllor(){
self::$controller = isset($_GET['controller'])?daddslashes($_GET['controller']):'index';
}private static functioninit_method(){
self::$method = isset($_GET['method'])?daddslashes($_GET['method']):'index';
}public static function run($config){
self::$config = $config;
self::init_db();
self::init_view();
self::init_controllor();
self::init_method();
C(self::$controller, self::$method);
}
}
8.adminController.class.php 用户控制
require_once("libs/model/adminModel.class.php");classadminController{public functionlogin(){if($_POST){//登录处理
$this->checklogin();
}else{
VIEW::display("login.html");
}
}private functionchecklogin(){$authobj = newadminModel;if($authobj->loginsubmit()){$this->showmessage("登录成功");
}else{$this->showmessage("登录失败");
}
}private function showmessage($info){echo "";exit;
}
}
9.adminModel.class.php 用户模型
classadminModel{//定义表名
public $_table = "admin";private $auth="";function findByUsername($username){$sql = 'select * from '.$this->_table.' where username="'.$username.'"';return DB::findOne($sql);
}public functionloginsubmit(){if(empty($_POST["username"])||empty($_POST["password"])){return false;
}$username = addslashes($_POST["username"]);$password = addslashes($_POST["password"]);//用户验证操作
if($this->auth = $this->checkuser($username,$password)){$_SESSION["auth"]=$this->auth;return true;
}else{return false;
}
}private function checkuser($username,$password){//$adminobj = M("admin");
//$auth = $adminobj->findByUsername($username);
$auth = $this->findByUsername($username);if((!empty($auth))&&$auth["password"]==$password){return $auth;
}else{return false;
}
}
}
10.admin.php php入口
header("Content-type: text/html; charset=utf-8");session_start();require_once('config.php');require_once('framework/pc.php');
PC::run($config);
11.config.php php配置
$config=array("dbconfig"=>array("dbhost" => "localhost",
"dbuser" => "root",
"dbpsw" => "root",
"dbname" => "demo",
"dbcharset" => "utf8"),
"viewconfig" => array('left_delimiter' => '{',
'right_delimiter' => '}',
'template_dir' => 'html',
'compile_dir' => 'data/template_c',
"cache_dir" => "data/cache")
)