想边听边看就点播放按钮吧,我写这个的时候就是边听这个歌边整理的= =
代码语言:javascript复制[player autoplay="0"]
目的是做一个限制页面,取名首页(Index/index),如果没登陆过的话就跳转到登陆页面(Login/login)登陆,登录成功后跳转到首页。
其中的关键就是怎么判断是否登陆过。
最简单的是通过SESSION信息来判断是否已经登陆。
例如:首页的index方法写以下代码判断,并跳转登陆页面
//判断用户是否登陆过 通过SESSION
代码语言:javascript复制if(isset($_SESSION['username']) && $_SESSION['username']!=''){
$this->display();
}else{
$this->redirect('Login/login');
}
登陆页面的表单中包括username、password、verify(验证码)三项和登录按钮
登陆按钮的提交的代码如下,用来判断验证码和写入SESSION
//接受值 判断用户数据是否存在 存在 允许登陆 不存在 显示错误信息
代码语言:javascript复制$username=$_POST['username'];
$password=$_POST['password'];
$code=$_POST['code'];
if(!empty($_POST)){
//验证码校验
$verify = new ThinkVerify();
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注入的风险。
代码语言:javascript复制<?php
namespace AdminModel;
use ThinkModel;
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;
}
}
}
?>
代码语言:javascript复制 if (!empty($_POST)) {
$verify = new ThinkVerify();
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();
}
}
现在通用的流行方法是先查询用户名是否存在,若不存在,提示错误,如果存在,则将数据库里面的密码信息和用户输入的信息比对,出结果。
嗯,方法是不断改进的。