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_实现登录功能的更多相关文章
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(五)——实现注册功能
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(四)——对 run.py 的调整
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...
- 构建NetCore应用框架之实战篇(四):BitAdminCore框架1.0登录功能细化及技术选型
本篇承接上篇内容,如果你不小心点击进来,建议从第一篇开始完整阅读,文章内容继承性连贯性. 构建NetCore应用框架之实战篇系列 一.BitAdminCore框架1.0版本 1.1.0版本是指最小版本 ...
- smm框架学习------smm框架整合实现登录功能(一)
一.准备所需的jar包 1.1所需jar包 1.Spring框架jar包 2.Mybatis框架jar包 3.Spring的AOP事务jar包 4.Mybatis整合Spring中间件jar包 5.a ...
- smm框架整合实现登录功能
一.准备所需的jar包 1.1所需jar包 1.Spring框架jar包 2.Mybatis框架jar包 3.Spring的AOP事务jar包 4.Mybatis整合Spring中间件jar包 5.a ...
- SpringMVC详解(四)------SSM三大框架整合之登录功能实现
为了后面讲解的需要,我们取数据都会从数据库中获取,所以这里先讲讲三大框架(Spring.SpringMVC.MyBatis)的整合.前面讲解 MyBatis 时,写了一篇 MyBatis 和 Spri ...
随机推荐
- HDOJ 1716 排列2 next_permutation函数
Problem Description Ray又对数字的列产生了兴趣: 现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数. Input 每组数据占一行,代表四张卡 ...
- CSS3 概览 更新时间 2014-0412-1317
CSS3 概览 CSS3可以划分为:文字.边框模型.背景.动画等. CSS3颜色模块 CSS2.1的时候可以使用4种颜色方式,直接使用颜色名,如 redRGB值,如 rgb(0,90,255)RGB百 ...
- Java Executor 框架学习总结
大多数并发都是通过任务执行的方式来实现的.一般有两种方式执行任务:串行和并行. class SingleThreadWebServer { public static void main(String ...
- CentOS让root用户可以SSH登录
一.说明 Solaris 10 出于安全原因,默认参数很严格,禁止root用户直接使用ssh登陆 二.处理 1.可以先用非root的帐户,登陆到ssh后,su成root 2.如 ...
- 朴素贝叶斯(naive bayes)算法及实现
处女文献给我最喜欢的算法了 ⊙▽⊙ ---------------------------------------------------我是机智的分割线----------------------- ...
- java基础之 IO流
javaIO流 IO流 : (input output) 输入输出流 :输入 :将文件读到内存中 输出:将文件从内存输出到其他地方. IO技术的作用:主要就是解决设备和设备之间的数据传输问题 ...
- HTML5 File api 实现断点续传
目前市场上大多数的网站的断点上传都是需要安装浏览器插件的,本文就针对高级浏览器的环境下,通过HTML5 File api实现断点上传进行说明 一.实现文件多选 HTML5的<input>新 ...
- 怎样安装两个tomcat,怎样配置
装两个tomcat 各自是6.0和7.0 可想执行tomcat6.0 可是实际上却执行tomcat7.0 两个版本号都是用解压缩包 事实上就是不能执行tomcat6.0 仅仅能执行7.0 两个环境变量 ...
- GCC相关的环境变量
介绍GCC在编译阶段和程序运行阶段用到的环境变量. GCC编译时用到的环境变量 GCC编译时用到的变量. C_INCLUDE_PATH GCC编译时查找头文件的目录列表.比如: echo $C_INC ...
- 设置Eclipse中文API提示信息
准备工作:下载中文API到本机:http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html_ ...