PHP实战
PHP:
【PHP】
了解项目结构
-
Controller是控制层
-
View是视图层
-
- 从pulic’下面复制模板-
-
在view层创建admin文件夹,粘贴进去
-
在controller层创建Admin文件夹(注意大写),创建和模板相同名字的控制器。
如图所示
登录:
- Login.html
记得改路径
令牌使用
-
三步走:找到login.html 找到标签,添加{:token}
-
只需要在规则里面添加 token就可以了,名称都是一样的
'__token__' => ['token']
数据的验证
- 在Application文件下创建和view同级的文件夹 validate
密码的验证
- 注意1,2,3三个地方:
规则写在: $rule里面,验证语句写在 $message里面,都是protected
DB的操作
- where
Db::name('admin')->where('username',$params['username'])->findOrEmpty();
- 判断用户名是否一致(用在登录验证)
$userInfo = Db::name('admin')->where('username',$params['username'])->findOrEmpty();
Session的操作
session 写在登录判断成功语句之后
登录页面显示admin101
-
如图所示这么写:
-
因为静态文件写在 User/login.html里面
-
所以要去 controller层里面的User.php里面
-
写一个和 login.html同名的函数
-
加入下面这句话
$this->assign("customer","admin001");
- get
$username = Session::get("adminInfo")['username'];
- set
$userAdmin = Session::get("adminInfo");
$this->assign("userAdmin", $userAdmin['username']);
搜索功能
-
在show_list.html里面找到 搜索函数
-
修改url的跳转地址(自定义)
-
在admin.php里面创建 dataSearch_user函数(静态页面自定义的函数)
-
书写搜索DB操作
-
还是在上面这个function里面
$map[] = ['username','=',$searchParams['username']];
$pageData = Db::name("admin")->where($map)->paginate($pageSize)->toArray();
- 返回的格式固定
return [
'code'=>0,
'message'=>"请求成功",
'count'=>$pageData['total'],//总的数据
'data'=>$pageData['data'],
'page'=>Request::get("page"),
'limit'=>Request::get("limit"),
/*json_encode() 数组转为JSON字符串
json_decode() JSON字符串转为数组
* */
'query'=>$searchParams
];
访问页面
数据渲染
- 四步走
-
定义渲染的页面在view视图层里面
-
找到function叫做table的地方
-
改变url的地址,地址随便写,最后要到admin里面去创建相同名称的function
'{:url("get_admin_list")}'
- 在 cols里面布局你要的数据
完成上面的四个,只是完成了静态页面的配置,还要去controller里面创建function
- controller层
-
在admin里面写,设置function函数
-
蓝色框框里面的不要写
-
标号1-4照抄(实在不会去 F盘里面找planA,找 admin101里面的controller里面的admin,按ctrl+F打开搜索,)
结果如下图所示:
数据提交
管理员信息更新修改
-
在管理员修改页面找到监听提交的位置
-
添加ajax的代码,ajax
$.ajax({
//url: '/admin028/User/doLogin',
url: '{:url("show_basic_confirm",["a"=>1,"b"=>2],".html",true)}',
type: 'post',
data: index,
success: function (res) {
console.log(res)
if(res.code == 200) {
layer.msg('success', function () {
window.location.reload();
window.location.href = '{:url("admin/show_basic_info")}';
})
} else {
// code fail renew delete update clear
layer.alert(res.message)
}
},
error:function () {
}
})
return false;
-
到 controller层去找show_basic_confirm
-
先判断用户名是否存在
假设要求用户名不能被修改,直接显示
如下图所示创建判断语句:
-
创建校验,如何引入校验去这篇文档查看 > 数据的校验
-
paramGe是一个新的函数在这个函数的上面写入
如下图所示:
代码直接复制:
$adminInfo = Db::name('admin')->where('username',
Session::get("adminInfo")['username']);
$program = [
[
'admin_id' => $adminInfo['id'],
'create_ip' => Request::ip(),
'create_at' => date('Y-m-d H:i:s'),
'module' => Request::module(),
'controller' => Request::controller(),
'params' => json_encode(Request::param()),
'user_agent' => Request::header("user_agent"),
]
];
Db::name('admin_log')->insertAll($program);
生成日志记录
在admin里面 deal_menager函数里面直接复制
$search = Db::name('admin')->where("username",$params['username'])->findOrEmpty();
$program = [
'admin_id' => $search['id'],
'create_ip' => Request::ip(),
'create_at' => date('Y-m-d H:i:s'),
'module' => Request::module(),
'controller' => Request::controller(),
'params' => json_encode(Request::param()),
'user_agent' => Request::header("user_agent"),
];
Db::name('admin_log')->insert($program);
如下图所示:
添加管理员
public function deal_manager(){
$params = [
'username' => Request::post('username'),
'password' => Request::post('password'),
];
$result = Db::name("admin")->where("username",$params['username'])->findOrEmpty();
$ManagerCheck=new ManagerCheck();
if(!$ManagerCheck->check($params)) {
$res = [
"code"=>201,
"message"=>"账号密码格式不正确",
];
return json($res);
}
if($result) {
$res = [
"code"=>202,
"message"=>"账号已经存在",
];
return json($res);
}
$data = [
'username' => $params['username'],
'password' => password_hash($params['password'],PASSWORD_DEFAULT),
'create_at' => date('Y-m-d H:i:s'),
'update_at' => date('Y-m-d H:i:s'),
'last_ip' => Request::ip()
];
Db::name("admin")->insert($data);
$res = [
"code"=>200,
"message"=>"账号创建成功",
"data"=>$data
];
$search = Db::name('admin')->where("username",$params['username'])->findOrEmpty();
$program = [
'admin_id' => $search['id'],
'create_ip' => Request::ip(),
'create_at' => date('Y-m-d H:i:s'),
'module' => Request::module(),
'controller' => Request::controller(),
'params' => json_encode(Request::param()),
'user_agent' => Request::header("user_agent"),
];
Db::name('admin_log')->insert($program);
return json($res);
}
public function add_manager(){
return $this->fetch();
}
创建侧边菜单栏
操作方式:
-
在public目录下找到api文件夹
-
api文件夹下面找到init.json文件
-
init.json文件里面找到 “menuinfo”
-
在menuinfo模仿其他的格式写一个
如下图所示:
数据库创建字段
- 数据库实在不会写没有关系,上面那些代码要写进去,模板复制清楚
- username , password , id 三个就可以
-
数据库在这里,创建上面的三个字段就可以
-
三个字段名 username , password , id