想边听边看就点播放按钮吧,我写这个的时候就是边听这个歌边整理的= =
[player autoplay="0"]
目的是做一个限制页面,取名首页(Index/index),如果没登陆过的话就跳转到登陆页面(Login/login)登陆,登录成功后跳转到首页。
其中的关键就是怎么判断是否登陆过。
最简单的是通过SESSION信息来判断是否已经登陆。
例如:首页的index方法写以下代码判断,并跳转登陆页面
//判断用户是否登陆过 通过SESSION
if(isset($_SESSION['username']) && $_SESSION['username']!=''){ $this->display(); }else{ $this->redirect('Login/login'); }
登陆页面的表单中包括username、password、verify(验证码)三项和登录按钮
登陆按钮的提交的代码如下,用来判断验证码和写入SESSION
//接受值 判断用户数据是否存在 存在 允许登陆 不存在 显示错误信息
$username=$_POST['username']; $password=$_POST['password']; $code=$_POST['code']; if(!empty($_POST)){ //验证码校验 $verify = new \Think\Verify(); if(!$verify->check($code)){ $this->error('验证码错误'); } $m=M('User'); $where['username']=$username; $where['password']=$password; $i=$m->field('id')->where($where)->find(); if($i){ $_SESSION['username']=$username; $_SESSION['id']=$i['id']; $this->success('用户登陆成功',U('Index/index')); }else{ $this->error('该用户不存在'); } }
就是这么简单^_^
注:跳转中直接使用redirect方法即可,如果想要个缓冲页,可使用success和error方法,但是success方法的跳转页面一定要用U方法重置一下地址,如果按照手册里面的写会显示方法不存在。
修改日期04/01/2015 19:42:59
以上方法实现上是没问题的,但是在实际使用中有sql注入的风险。
<?php namespace Admin\Model; use Think\Model; class ManagerModel extends Model{ function checkNamePwd($name,$pwd){ //第一步现根据$name查询是否有此记录 //select * from sw_manager where mg_name=$name. //或者select() find() //或者根据指定字段进行查询,getByXXX(),例如getByMg_name($name),父类Model__call封装的方法 $info = $this -> getByMg_name($name); //$info=null 说明用户名错误 //$info = 一维数组 用户名正确 if ($info != null) { //验证密码 if ($info['mg_pwd'] !=$pwd) { return false; }else{ return $info; } } else { return false; } } } ?>
if (!empty($_POST)) { $verify = new \Think\Verify(); if(!$verify->check($_POST['captcha'])){ echo "验证码错误"; }else{ $user=D('Manager'); $rst=$user->checkNamePwd($_POST['mg_username'],$_POST['mg_password']); if ($rst === false) { echo "用户名或密码错误"; } else { //登录信息持久化 session('mg_username',$rst['mg_name']); session('mg_id',$rst['mg_id']); //页面跳转到首页 $this->redirect('Index/index'); } } } else { //判断用户名密码,在Model里面制作一个专门的方法来验证。 $this->display(); } }
现在通用的流行方法是先查询用户名是否存在,若不存在,提示错误,如果存在,则将数据库里面的密码信息和用户输入的信息比对,出结果。
嗯,方法是不断改进的。
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句