PHP框架_Smarty_实现登录功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP框架_Smarty_实现登录功能相关的知识,希望对你有一定的参考价值。
1.项目框架
|--mvc
|--data 数据
|--cache 缓存
|--template_c 模板生成目录
|--framework
|--function
|--libs
|--core
|--db
|--view
|--Smarty smarty核心文件
|--pc.php 统一初始化
|--html
|--img
|--libs
|--controller
|--adminController.class.php 用户控制
|--model
2.function.php 功能类
function daddslashes($str){ return (!get_magic_quotes_gpc())?addslashes($str):$str; }
3.DB.class.php 数据库工具类
class DB { 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 视图工具类
class VIEW { 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."<br />".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); } class PC{ public static $controller; public static $method; private static $config; private static function init_db(){ DB::init(‘mysql‘, self::$config[‘dbconfig‘]); } private static function init_view(){ VIEW::init(‘Smarty‘, self::$config[‘viewconfig‘]); } private static function init_controllor(){ self::$controller = isset($_GET[‘controller‘])?daddslashes($_GET[‘controller‘]):‘index‘; } private static function init_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"); class adminController{ public function login(){ if($_POST){ //登录处理 $this->checklogin(); }else{ VIEW::display("login.html"); } } private function checklogin(){ $authobj = new adminModel; if($authobj->loginsubmit()){ $this->showmessage("登录成功"); }else{ $this->showmessage("登录失败"); } } private function showmessage($info){ echo "<script>alert(‘$info‘)</script>"; exit; } }
9.adminModel.class.php 用户模型
class adminModel{ //定义表名 public $_table = "admin"; private $auth=""; function findByUsername($username){ $sql = ‘select * from ‘.$this->_table.‘ where username="‘.$username.‘"‘; return DB::findOne($sql); } public function loginsubmit(){ 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" ) )
以上是关于PHP框架_Smarty_实现登录功能的主要内容,如果未能解决你的问题,请参考以下文章