TP5 用户管理
http://pan.baidu.com/s/1i4GsL3f 这个是全部源码。包括数据库文件也在项目根目录下。
为了整洁美观,我把所有用到的方法贴在文章的末尾部分
可以边看实现流程,边看实现的代码。
首先配置application/config.php
// 数据库类型
"type" => "mysql",
// 服务器地址
"hostname" => "127.0.0.1",
// 数据库名
"database" => "student",
// 用户名
"username" => "root",
// 密码
"password" => "",
登录功能流程
1、定义一个Login.html页面,提交表单,然后在login_all()方法验证这次登录是否成功,获取用户名input(‘name’);密码input(‘password’);
<form method="post" action="login_all">
<input type="text" required="required" placeholder="用户名" name="name"></input>
<input type="password" required="required" placeholder="密码" name="password"></input>
<button class="but" type="submit">登录</button>
</form>
2、通过DB->where()…查询用户密码是否正确
3、存入session,在前置方法做验证,如果没登录就无法进入index 页面或其他方法。
4、登录成功,通过redirect(‘index’); 方法跳转到首页
首页功能
1、首先这是一个用户管理的系统,要有用户登录、注册、修改、删除等功能
如上图所示,这是一个首页界面
2、我们看看其中的HTML代码,其中{volist}这个标签是TP自带的一个循环数据的标签,其中name=”data” 代表的是后台传过来的数据,如下后台代码
——————————-这个是index()的后台代码———————
$db = db("user"); //链接user数据库
$data = $db->select(); //查询数据
return $this->fetch("index",["data"=>$data]);
//"index"代表的是index.html页面,["data"=>$data]代表的是传入前台的数据,以"data"命名
———————-这个是index.html的代码———————-
我们分析一下这段代码,首先从删除说起吧,数据库的每一条数据一般都会有个ID ,然后通过ID删除这条数据,就好像每个人都会有一个身份证做为特殊标识一样。同理哪不管是修改、删除,都首先要找到这个人的ID,我们才可以对这条数据进行操作。
delete?id={$vo.id} ,其中delete代表删除方法,?id={$vo.id} 代表用get方式传值给delete($id)方法 ,然后通过这个ID进行操作。
<h1 style=" text-align: center;">welcome:<font style=" color: red;">{$_SESSION["think"]["name"]} <a href="login_out">退出登录</a></font></h1>
<table>
<caption>用户管理</caption>
<thead>
<tr>
<th>ID
<th>用户名
<th>登录时间
<th>操作
</thead>
<tbody>
{volist name="data" id="vo"}
<tr>
<td>{$vo.id}
<td>{$vo.name}
<td>{$vo.logintime}
<td><a href="add">添加</a>|<a href="update?id={$vo.id}">修改</a>|<a href="delete?id={$vo.id}">删除</a>
{/volist}
</tbody>
</table>
——————————update方法——————————-
传入一个要修改的ID,然后通过这个ID去修改这条数据的值,通过这个方法去修改update([‘name’=>$name]) , ‘name’就是字段名,$name就是要修改的值。
//用户修改方法
public function update_all($id)
{
$db = db("user");
$name = input("name");
$password = input("password");
$upd = $db->where(["id"=>$id])->update(["name"=>$name,"password"=>$password]);
if($upd){
echo "修改成功";
$this->redirect("index");
}else{
echo "修改失败";
}
}
——————————update.html——————————-
这个页面的$data是从update方法传来的,首先我们要修改一个人的信息,要先让他看到他之前的信息。通过传到update的ID去查询这条信息,然后再update.html页面显示出来。再通过update_all()修改这条数据。
<form method="post" action="update_all">
<input type="text" required="required" placeholder="用户名" name="name" value="{$data["name"]}"></input>
<input type="password" required="required" placeholder="密码" name="password"></input>
<input type="text" hidden="false" name="id" value="{$data["id"]}">
<button class="but" type="submit">提交</button>
</form>
———————————-add.html—————————-
添加用户不需要知道用户的ID ,所以我们在添加的时候,只要填上对应的值就可以添加了。
$list = $db->insert([‘name’ => $name, ‘password’ => $password]);
这句代码就是添加的代码。获取name , password的值以后添加到对应的数据表。
<form method="post" action="add_all">
<input type="text" required="required" placeholder="用户名" name="name"></input>
<input type="password" required="required" placeholder="密码" name="password"></input>
<button class="but" type="submit">提交</button>
</form>
———————————-总结——————————
其实用户管理最基本的几个操作方法就是
update()
insert()
find()
delete()
基本上所有的网站都离不开添加修改删除查询。
这也是最基础的东西,剩下的还需要靠一点一点的项目积累下来。
namespace appindexcontroller;
use thinkController;
use appindexmodelUser;
use thinkSession;
class Index extends hinkController
{
protected $beforeActionList = [
"gosession" => ["except"=>"login,login_all"], //tp前置方法,不管执行那个方法,都要先执行gosession , 除了login,login_all方法
];
//定义前置控制器
public function gosession()
{
$id=Session::get("id");
if(!$id)
{
$this->error("请先登录","login");
}
}
//用户管理首页, 登录成功后的页面
public function index()
{
$db = db("user");
$data = $db->select();
return $this->fetch("index",["data"=>$data]);
}
//退出登录
public function login_out()
{
session::clear();
$this->success("退出成功","login");
}
//登录页面
public function login()
{
return $this->fetch("login");
}
//用户登录方法
public function login_all()
{
$db = db("user");
$name = input("post.name");
$password = input("post.password");
// 查询数据
$list = $db->where(["name"=>$name,"password"=>$password])->find();
//如果存在就存入session,并且跳转首页
if($list)
{
Session::set("name",$name);
Session::set("id",$list["id"]);
$db->where(["name"=>$name,"password"=>$password])->update(["logintime"=>date("Y-m-d H:i:s")]);
$this->redirect("index");
}else
{
$this->error("登录失败","login");
}
}
//用户添加页面
public function add()
{
return $this->fetch("add");
}
//用户添加方法
public function add_all()
{
$name = input("post.name");
$password = input("post.password");
$db = db("user");
//添加用户
$list = $db->insert(["name" => $name, "password" => $password]);
//判断添加用户是否成功
if($list){
$this->success("添加成功!","index");
}else{
$this->error("添加错误!","index");
}
}
//用户修改页面
public function update($id)
{
$db = db("user");
$data = $db->where(["id"=>$id])->find();
return $this->fetch("update",["data"=>$data]);
}
//用户修改方法
public function update_all($id)
{
$db = db("user");
$name = input("name");
$password = input("password");
$upd = $db->where(["id"=>$id])->update(["name"=>$name,"password"=>$password]);
if($upd){
echo "修改成功";
$this->redirect("index");
}else{
echo "修改失败";
}
}
//删除用户方法
public function delete($id)
{
$db = db("user");
$del=$db->where(["id" => $id])->delete();
$this->redirect("index");
}
}
- 上一篇: hadoop append 追加文件 错误
- 下一篇: php将数组写入文件