企业站点后台管理之用户管理,首先考虑用户登录后才能进行后续的操作。1.当用户未登录访问后台时,跳转到用户登录界面
2.当用户已经登录,再次访问登录界面company.com/admin.php/user/login,提示用户已经登录,不要重复登录,跳转到后台首页。
用户表中的登录地点字段,通过curl http_Get() ,访问淘宝ip地址库得到响应,解析结果中的json,得到登录的地址。
protected $beforeActionList = [
//判断用户是否已登录?
'islogined' => ['only'=>'login']
];
表示执行login() 方法之前,先执行 islogined()方法
application\common\model\User.php
<?php
namespace app\common\model;
use think\Model;
class User extends Model
{
protected $table='user';
protected $pk='user_id';
protected $autoWriteTimestamp=true;
protected $update_time='update_time';
protected $dateFormat='Y/md H:i:s';
//password sha1 to db
protected function setPasswordAttr($password){
return sha1($password);
}
}点击 "运行实例" 按钮查看在线实例
application\admin\controller\User.php
<?php
namespace app\admin\controller;
use app\common\controller\Base;
use app\common\model\User as UserModel;
use think\facade\Request;
use think\facade\Session;
class User extends Base
{
protected $beforeActionList = [
//判断用户是否已登录?
'islogined' => ['only'=>'login']
];
//login
public function login(){
return $this->view->fetch();
}
public function index(){
$user=UserModel::get(1);
$this->view->user=$user;
return $this->view->fetch();
}
public function doLogin(){
$email=Request::param('email');
$password=sha1(Request::param('password'));
$user=UserModel::get(1);
if($user['email']!=$email){
$res=['status'=>0,'msg'=>'邮箱有误'];
} elseif ($user['password'] != $password){
$res=['status'=>0,'msg'=>'密码有误'];
} else {
$res=['status'=>0,'msg'=>'登录成功'];
Session::set('user_name',$user['user_name']);
}
return $res;
}
public function logOut(){
Session::delete('user_name');
$this->redirect('login');
}
public function adminEdit(){
$user=UserModel::get(1);
$this->view->user=$user;
return $this->view->fetch();
}
public function doEdit(){
$user=Request::param();
$data=[
'email'=>$user['email'],
'password'=>$user['password']
];
$where=['user_id'=>1];
UserModel::update($data,$where);
}
}点击 "运行实例" 按钮查看在线实例
application\admin\view\user\index.html
{include file="common@header" /}
<body>
<div class="x-nav">
<span class="layui-breadcrumb">
<a href="">首页</a>
<a href="">管理员管理</a>
<a>
<cite>管理员列表</cite></a>
</span>
<a class="layui-btn layui-btn-small" style="line-height:1.6em;margin-top:3px;float:right" href="javascript:location.replace(location.href);" title="刷新">
<i class="layui-icon" style="line-height:30px">ဂ</i></a>
</div>
<div class="x-body">
<table class="layui-table">
<thead>
<tr>
<th>ID</th>
<th>用户名</th>
<th>邮箱</th>
<th>登陆地点</th>
<th>登陆次数</th>
<th>更新时间</th>
<th>操作</th>
</thead>
<tbody>
<tr>
<td>{$user.user_id}</td>
<td>{$user.user_name}</td>
<td>{$user.email}</td>
<td>{:getCity()}</td>
<td>{$user.login_count}</td>
<td>{$user.update_time}</td>
<td class="td-manage">
<a title="编辑" onclick="x_admin_show('编辑','{:url(\"adminEdit\")}')" href="javascript:;">
<i class="layui-icon"></i>
</a>
</td>
</tr>
</tbody>
</table>
</div>
<script>
layui.use('laydate', function(){
var laydate = layui.laydate;
//执行一个laydate实例
laydate.render({
elem: '#start' //指定元素
});
//执行一个laydate实例
laydate.render({
elem: '#end' //指定元素
});
});
</script>
</body>
</html>点击 "运行实例" 按钮查看在线实例
application\admin\view\user\admin_edit.html
{include file="common@header" /}
<body>
<div class="x-body">
<form class="layui-form">
<div class="layui-form-item">
<label for="username" class="layui-form-label">
用户名
</label>
<div class="layui-input-inline">
{//用户名admin不允许修改,在input中添加disabled,禁用掉}
<input type="text" id="username" name="username" required="" lay-verify="required"
autocomplete="off" value="{$user.user_name}" class="layui-input" disabled>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red"></span>用户名禁用修改
</div>
</div>
<div class="layui-form-item">
<label for="L_email" class="layui-form-label">
邮箱
</label>
<div class="layui-input-inline">
<input type="text" value="{$user.email}" id="L_email" name="email" required="" lay-verify="email"
autocomplete="off" class="layui-input" autofocus="">
</div>
</div>
<div class="layui-form-item">
<label for="L_pass" class="layui-form-label">
密码
</label>
<div class="layui-input-inline">
<input type="password" id="L_pass" name="pass" lay-verify="pass"
autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">
6到16个字符
</div>
</div>
<div class="layui-form-item">
<label for="L_repass" class="layui-form-label">
确认密码
</label>
<div class="layui-input-inline">
<input type="password" id="L_repass" name="repass" lay-verify="repass"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label for="L_repass" class="layui-form-label">
</label>
<button class="layui-btn" lay-filter="add" lay-submit="">
保存
</button>
</div>
</form>
</div>
<script>
layui.use(['form','layer'], function(){
$ = layui.jquery;
var form = layui.form
,layer = layui.layer;
//自定义验证规则
form.verify({
pass: [/(.+){6,12}$/, '密码必须6到12位'],
repass: function(value){
if($('#L_pass').val()!=$('#L_repass').val()){
return '两次密码不一致';
}
}
});
//监听提交
form.on('submit(add)', function(data){
console.log(data);
//发异步,把数据提交给php
//以post方式提交到服务器
$.post("{:url('doEdit')}",{
'email': $('#L_email').val(),
'password': $('#L_pass').val()
})
layer.alert("保存成功", {icon: 6},function () {
// 获得frame索引
var index = parent.layer.getFrameIndex(window.name);
//关闭当前frame
parent.layer.close(index);
});
return false;
});
});
</script>
</body>
</html>点击 "运行实例" 按钮查看在线实例
application\admin\view\user\login.html
{include file="common@header" /}
<body class="login-bg">
<div class="login layui-anim layui-anim-up">
<div class="message">企业网站后台管理系统</div>
<div id="darkbannerwrap"></div>
<form method="post" class="layui-form" >
<input name="email" placeholder="邮箱" type="email" lay-verify="required" class="layui-input" id="L_email" autofocus="">
<hr class="hr15">
<input name="password" lay-verify="required" placeholder="密码" type="password" class="layui-input" id="L_pass">
<hr class="hr15">
<input value="登录" lay-submit lay-filter="login" style="width:100%;" type="submit">
<hr class="hr20" >
</form>
</div>
<script>
$(function () {
layui.use('form', function(){
var form = layui.form;
//监听提交
form.on('submit(login)', function(data){
//将登录信息提交到服务器上验证
$.post("{:url('user/doLogin')}",{
'email': $('#L_email').val(),
'password': $('#L_pass').val()
},function(data){
//如果验证成功,跳转到后台首页
if (data.status == 1) {
layer.msg(data.msg,function(){
location.href='{:url("index/index")}'
})
}
//验证失败,跳转到登录页
layer.msg(data.msg,function(){
location.href='{:url("user/login")}'
})
},'json')
return false;
});
});
})
</script>
<!-- 底部结束 -->
</body>
</html>点击 "运行实例" 按钮查看在线实例
application\common\controller\Base.php
<?php
namespace app\common\controller;
use think\Controller;
use think\facade\Session;
class Base extends Controller
{
protected function initialize()
{
parent::initialize();
$this->filter(function($content){
return str_replace('__ADMIN__','/static/admin',$content);
});
}
protected function isLogin()
{
//如果没有登录,并且当前操作不是登录,则提示用户登录并跳转到登录页面
if (!Session::has('user_name')){
$this->error('请登录~','user/login');
}
}
//判断用户是否已经登录了?如果已登录,应该提示用户不要重复登录
protected function islogined()
{
if(Session::has('user_name')) {
$this->error('不要重复登录');
}
}
}点击 "运行实例" 按钮查看在线实例
application\common.php
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------
// 应用公共文件
use think\Db;
function getUserName(){
return Db::connect('qiye')->table('user')->value('user_name');
}
function getCurrentTime(){
return date('Y-m-d H:i:s',time());
}
function getMysqlVersion(){
return Db::connect('qiye')->query('SELECT VERSION() AS version')[0]['version'];
}
function getCateName($cateId){
return Db::table('category')->where('cate_id',$cateId)
->value('cate_name');
}
function getCity(){
$ip = $_SERVER['REMOTE_ADDR']; //获取客户端IP地址
// $url = 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip;
$url = 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip;
$res =json_decode(http_get($url), true);
return $res['data']['city'];
}
function http_Post($url,$data){
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,trim($url));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
//启用时会发送一个常规的POST请求,为1或者为true
if(!empty($data)){
$data = is_array($data)?json_encode($data):$data;
curl_setopt($curl,CURLOPT_POST,1);
curl_setopt($curl,CURLOPT_POSTFIELDS,$data);//需要要传送的内容
}
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$return_str = curl_exec($curl);
curl_close($curl);
return $return_str;
}
function http_Get($url){
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,trim($url));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl,CURLOPT_HEADER,0);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'GET');//需要要传送的内容
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$return_str = curl_exec($curl);
curl_close($curl);
return $return_str;
}点击 "运行实例" 按钮查看在线实例

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号