##一、實驗目的
1、掌握ThinkPHP5.0用戶單頁瀏覽、增加、修改和刪除功能。
##二、實驗內容
1、建立ThinkPHP5.0用戶單頁瀏覽頁面,且包括刪除功能。
2、建立ThinkPHP5.0用戶增加和修改頁面。
##三、實驗步驟及過程
常用模塊具有的功能包括:瀏覽、刪除、修改、增加等功能,我們在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/index/index.html)主界面。用戶通過登錄頁面(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()方法完成用戶信息刪除,代碼如下:
~~~
<?php
/**
* 單頁控制器
*/
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(在公眾號里輸入彩蛋號即可得到源碼)。