一、数据库:创建一个数据库和相应的数据库用户表myweb/manager
二、admin/Action:创建一个类文件LoginAction.class.php
1、首先让LoginAction类继承action类
2、然后创建login()公有方法public function
login(){},打开登录页面$this->display("login")
3、在tpl文件夹下创建一个和类名一样的文件件即Login,大小写都要一致,然后把登陆地页面都放到login.html中
4、在页面上写入form标签,action=“{:U('Login/login')}”
5、在action文件中创建验证码的方法;public function
yzm(){import('ORG.Util.Image');Image::buildImageVerify();}
6、在login.html中引入验证码,img的src为__APP__/Login/yzm/。也可以做个点击刷新事件,重调这个方法就ok了。
7、然后在后台的login方法中要做如下操作:
①、首先判断是否有数据提交$this->isPost()
②、如果有,则依次获得名称、密码和验证码$this->_post("username");
③、判断传过来的验证码和方法中的验证码是否相同md5($verify) == $_SESSION["verify"]
④、如果验证码相同,则实例化D模型,进行数据查询。如果没有就返回验证码失败
⑤、通过D模型返回的值,如果不是空,那么就存入输入的信息并且跳转页面session("userlogin",$data);$this->success("登录成功",U('Index/index'));如果返回是空的那么就返回登录失败。
8、在action方法中创建一个构造方法,来判断是否进行了登录。我们只需要判断我们有没有存入登录信息session("?userlogin"),如果存了登录的信息,那么我们就进行页面重定向$this->redirect("Index/index",array(),0,"");
三、构造/析构的方法:public
function __construct()/destruct()
1、构造方法是类中的一个特殊方法。当使用 new 操作符创建一个类的实例时,构造方法将会自动调用,其名称必须是
__construct() 。所以通常用它执行一些有用的初始化任务。该方法无返回值。
如果子类中定义了构造函数则不会暗中调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用
parent::__construct()。
2、与构造方法对应的就是析构方法,析构方法会在某个对象的所有引用都被删除或者当对象被显式销毁之前执行的一些操作或者功能。析构函数不能带有任何参数,其名称必须是
__destruct() 。
同样,如果子类中定义了析构函数则不会暗中调用其父类的析构函数。要执行父类的析构函数,需要在子类的析构函数中调用
parent::__destruct()。
四、退出登录
1、创建一个logout的方法。
2、将存入登录信息的session置为空。session("login",null)
3、重定向$this->redirect("Login/login",array(),0,"退出成功");