一、实验目的
1、掌握ThinkPHP5.0用户浏览、增加、修改和删除功能。
二、实验内容
1、建立ThinkPHP5.0用户浏览页面,且包括删除功能。
2、建立ThinkPHP5.0用户增加和修改页面。
(>>>>在公众号中输入文章最后彩蛋即可获取源代码)
开源项目:https://github.com/chenxhjeo,个人博客:http://blog.csdn.net/u013487761
技术QQ群名称:豆豆咨询,群号:625686304
微信公众号名称:豆豆咨询,微信公众号:douAsk
初建日期:2017.04.26
三、实验步骤及过程
常用模块具有的功能包括:浏览、删除、修改、增加等功能,我们在ThinkPHP5.0时候,应灵活掌握这些基本功能,以下我们将介绍如何实现这些功能。
1、创建浏览、增加、修改、删除界面
用户登录后,进入http://127.0.0.1/noneCms/public/index.php/weixin/index/index.html主界面,单击公众号用户,则进入了微信用户信息管理界面,包括用户信息浏览、删除、增加、修改几个功能,如图所示。
2、关键代码解析
用户通过登录页面http://127.0.0.1/noneCms/public/index.php/weixin/login/index进入后台管理模块,http://127.0.0.1/noneCms/public/index.php/weixin/index/index为用户登录之后后台管理主页面。然后,用户单击“公众号用户”,则进入用户管理界面,即http://127.0.0.1/noneCms/public/index.php/weixin/users/index。在该界面可以操作用户信息,包括浏览、添加、删除、修改等操作。
Users为用户管理控制模块,其文件为Users.php,即通过http://127.0.0.1/noneCms/public/index.php/weixin/users/index调用weixin模块的users控制器中的index方法进入用户浏览页面,用户登录之后主页面为http://127.0.0.1/noneCms/public/index.php/weixin/index/index。
1)Users.php文件
Users.php是users控制器文件,其中index()方法显示用户管理页面,add()方法完成用户信息增加,edit()方法完成用户信息修改,dele()方法完成用户信息删除,代码如下:
/**
*单页控制器
*/
namespace app\weixin\controller;
use app\weixin\model\Category;
use think\Config;
use think\Db;
use think\Loader;
class Users extends Common
{
public function index()
{
$list = Db::name('user')->field('username,logintime,id,loginip,email,islock,phone')->where('islock','neq',3)->select();
//$list = Db::name('user')->field('nickname,last_login_time,id,last_login_ip,email,status,phone')->where('status','eq',1)->select();
$this->assign('list', $list);
return $this->fetch();
}
/*
*添加用户
*/
public function add()
{
if (request()->isPost()) {
//修改处理
$params = input('post.');
$data = [
'username' => $params['user_name'],
'password' =>$params['password'],
'email' => $params['email'],
'phone' => $params['phone'],
'islock' => $params['islock'],
'repassword' => $params['repassword']
];
//验证规则
$validate = Loader::validate('UsersAdd');
if (isset($params['id'])) {
//更新操作
if($params['old_password']){
$info = Db::name('user')->field('password,encrypt')->find($params['id']);
$password = get_password($params['old_password'],$info['encrypt']);
if($info['password'] != $password){
exit(json_encode(['status' => 0, 'msg' => '原密码不正确', 'url' => '']));
}
}
if(!$validate->scene('edit')->check($data)){
$error = $validate->getError();
exit(json_encode(['status' => 0, 'msg' => $error, 'url' => '']));
}
$data['encrypt'] = get_randomstr();//6位hash值
$data['password'] = get_password($data['password'],$data['encrypt']);
unset($data['repassword']);
$flag = Db::name('user')->where('id',$params['id'])->update($data);
if ($flag) {
exit(json_encode(['status' => 1, 'msg' => '修改成功', 'url' => url('users/index')]));
} else {
exit(json_encode(['status' => 0, 'msg' => '修改失败,请稍后重试', 'url' => '']));
}
}else{
//新增
if(!$validate->check($data)){
$error = $validate->getError();
exit(json_encode(['status' => 0, 'msg' => $error, 'url' => '']));
}
unset($data['repassword']);
$data['encrypt'] = get_randomstr();//6位hash值
$data['password'] = get_password($data['password'],$data['encrypt']);
$data['logintime'] = time();
$data['createtime'] = time();
$data['loginip'] = request()->ip();
$data['username'] = $params['user_name'];
$data['phone'] = $params['phone'];
$flag=Db::name('user')->insert($data);
if ($flag) {
exit(json_encode(['status' => 1, 'msg' => '添加成功', 'url' => url('users/index')]));
} else {
exit(json_encode(['status' => 0, 'msg' => '添加失败,请稍后重试', 'url' => '']));
}
}
} else {
return $this->fetch();
}
}
/**
*修改用户信息
*/
public function edit($id)
{
$data = Db::name('user')->find($id);
$this->assign('data', $data);
return $this->fetch();
}
/**
*删除用户信息
*/
public function dele()
{
$id = input('param.id/d',0);
$flag = Db::name('user')->where(['id' => $id])->update(['islock' => 3]);
if ($flag) {
echo '删除成功';
} else {
echo '删除失败';
}
}
}
2)validate/UsersAdd.php验证文件
该文件辅助users控制器的add()和edit()方法验证用户输入的数据,在Users.php文件中采用代码$validate = Loader::validate('UsersAdd');调用UsersAdd验证器验证。
UsersAdd.php文件如下所示。
class UsersAdd extends Validate {
protected $rule =[
'username'=> 'require|max:25|min:4',
'email' => 'email',
'password' => 'require|max:25|min:6',
'repassword'=>'require|confirm:password'
];
protected $message=[
'username.require' => '用户名必须',
'username.max'=> '用户名最多不能超过25个字符',
'username.min'=> '用户名最少4个字符',
'password.require'=> '密码必须',
'password.min'=> '密码长度至少六位',
'email'=> '邮箱格式错误',
//'repassword.require' => '确认密码必须',
'repassword.confirm' => '两次密码必须一致'
];
/**
*验证场景
*/
protected $scene = [
'edit'=>['name','repassword'=>'confirm:password'],
];
}
四、技术服务
1、如果有疑问或者需要帮助,请加入QQ群(群名称:豆豆咨询,群号:625686304);或者公众号douAsk,公众号名称为“豆豆咨询”。扫描以下二维码,关注“豆豆咨询”。
技术QQ群名称:豆豆咨询,群号:625686304;微信公众号名称:豆豆咨询,微信公众号:douAsk
彩蛋号:1209。