+------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+----------------+ | uid | int(11) | NO | PRI | NULL | auto_increment | | uname | varchar(20) | YES | | NULL | | | upwd | varchar(20) | YES | | NULL | | | uflag | int(11) | YES | | NULL | | | identifier | varchar(32) | YES | | NULL | | | token | varchar(32) | YES | | NULL | | | timeout | int(11) | YES | | NULL | | +------------+-------------+------+-----+---------+----------------+
<?php
namespace Test\Controller;
use Think\Controller;
class TestController extends Controller {
public function login(){
//判断是否永久登录
$this->checkLong();
//已经登录则跳转至个人中心
if(isset($_SESSION['username'])){
$this->redirect('Test/ucenter');
}else{
//判断是否存在cookie
if(isset($_COOKIE['username'])){
$this->assign('username',$_COOKIE['username']);
}
//显示注册页
$this->display("test");
}
}
//显示验证码
public function verifyImg(){
$verify = new \Think\Verify();
//$verify->useZh = true; //使用中文验证码
$verify->length = 4;
$verify->entry();
}
//验证登录
public function check(){
$verify = new \Think\Verify();
if($verify->check(I("yzm"))){
//判断用户名密码
$user = new \Test\Model\TestModel();
$res = $user->checkName(I("username"),I("pwd"));
if($res === false){
echo "用户名或密码错误";
}else{
//用户信息存入session
session("username",$res['uname']);
session("id",$res['uid']);
//如果用户勾选了"记住我",则保持持久登陆
if(I("remember")){
$salt = $this->random_str(16);
//第二分身标识
$identifier = md5($salt . md5(I("username") . $salt));
//永久登录标识
$token = md5(uniqid(rand(), true));
//永久登录超时时间(1周)
$timeout = time()+3600*24*7;
//存入cookie
setcookie('auth',"$identifier:$token",$timeout);
$user->saveRemember($res['uid'],$identifier,$token,$timeout);
}
//把用户名存入cookie,退出登录后在表单保存用户名信息
setcookie('username',I('username'),time()+3600*24);
//跳转至会员中心
$this->redirect('Test/ucenter');
}
}else{
echo "输入错误";
}
}
//测试strstr函数
public function strstrtest(){
$param = "Think\Verify";
//第三个参数为true,返回'Think';没有第三个参数,返回'\Verify'
$name = strstr($param,'\\',true);
echo $name;
}
//用户中心
public function ucenter(){
//判断是否永久登录
$this->checkLong();
$this->assign("session",$_SESSION);
$this->display("ucenter");
}
//退出登录
public function loginout(){
session(null);
setcookie('auth', '', time()-1);
$this->redirect("Test/login");
}
//生成随机数,用于生成salt
public function random_str($length){
//生成一个包含 大写英文字母, 小写英文字母, 数字 的数组
$arr = array_merge(range(0, 9), range('a', 'z'), range('A', 'Z'));
$str = '';
$arr_len = count($arr);
for ($i = 0; $i < $length; $i++){
$rand = mt_rand(0, $arr_len-1);
$str.=$arr[$rand];
}
return $str;
}
//判断是否持久登录
public function checkLong(){
$check = new \Test\Model\TestModel();
$is_long = $check->checkRemember();
if($is_long === false){
}else{
session("username",$is_long['uname']);
session("id",$is_long['uid']);
}
}
}
<?php
namespace Test\Model;
use Think\Model;
class TestModel extends Model{
//验证登录信息
public function checkName($name,$pwd){
$admin = M("admin");
$info = $admin->getByUname($name);
if($info != null){
//验证密码
if($info['upwd'] == $pwd){
return $info;
}else{
return false;
}
}else{
return false;
}
}
//当用户勾选"记住我"
public function saveRemember($uid,$identifier,$token,$timeout){
$admin = M("admin");
$data['identifier'] = $identifier;
$data['token'] = $token;
$data['timeout'] = $timeout;
$where = " uid = ".$uid;
$res = $admin->data($data)->where($where)->save();
return $res;
}
//验证用户是否永久登录(记住我)
public function checkRemember(){
$arr = array();
$now = time();
list($identifier,$token) = explode(':',$_COOKIE['auth']);
if (ctype_alnum($identifier) && ctype_alnum($token)){
$arr['identifier'] = $identifier;
$arr['token'] = $token;
}else{
return false;
}
$admin = M("admin");
$info = $admin->getByidentifier($arr['identifier']);
if($info != null){
if($arr['token'] != $info['token']){
return false;
}else if($now > $info['timeout']){
return false;
}else{
return $info;
}
}else{
return false;
}
}
}
<DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="__CONTROLLER__/check" method="post">
<if condition="$username neq null">
<input type="text" name="username" placeholder="用户名" value="{$username}"><br>
<else />
<input type="text" name="username" placeholder="用户名"><br>
</if>
<input type="password" name="pwd" placeholder="密码"><br>
<input type="text" name="yzm" placeholder="验证码"><img src="__CONTROLLER__/verifyImg" onClick="this.src=this.src+'?'+Math.random()"><br>
<input type="checkbox" name="remember" id="remember"><label for="remember">记住我</label>
<input type="submit" value="提交">
</form>
</body>
</html>
<DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Documenttitle>
</head>
<body>
<if condition="$session['username'] neq null">
<i>{$session.username},</i>
<else />
<i>游客,</i>
</if>
欢迎您<br>
<a href="__CONTROLLER__/loginout">退出登录</a>
</body>
</html>
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有