php mvc smarty mysql_PHP框架_Smarty_实现登录功能

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")

)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值