ThinkPHP完整项目教程的第17课,公共模块与登陆模块的创建

作者:admin     字体:[增加 减小]    类型:原创
这节课我们要创建一个公共模块,并且实现一个验证码的方法,另外我们要创建一个登陆模块,实现注册并验证登陆的功能。

在进行模块创建之前,我们需要对ThinkPHP功能扩展,我们首先下载扩展包ThinkPHP3.1.2扩展包,然后将解压缩文件复制到/ThinkPHP/Extend/目录中。 ThinkPHP扩展包的安装位置

下面,我们来创建Public模块,并在其中写一个验证码的方法

<?php
class PublicAction extends Action {
    function verify() {
        import('ORG.Util.Image');
        Image::buildImageVerify();
    }
}

为了测试验证码的方法能不能用,我们在浏览器的地址栏中输入

http://localhost/think/admin.php/Public/verify

如果正确的话,可以看到类似下面的图片, ThinkPHP中利用Image::buildImageVerify()制作的验证码图片

接下来,我们创建一个Login的模块,在LoginAction.class.php文件中写入以下PHP代码

<?php
class LoginAction extends Action{
    function do_login() {
        extract($_POST);
        if ( empty($vcode) || md5($vcode) != $_SESSION['verify']) {
            $this->error('验证码错误!!!');
        }

        //根据用户名,获取一行信息,这里只获取了密码
        $row = M('User')->field('user_pwd')->where(array('user_name'=>$user_name))->find();

        if( empty($row) ) {
            $this->error("用户<strong>{$user_name}</strong>不存在");
        }

        if ( md5($user_pwd) != $row['user_pwd'] ) {
            $this->error("密码错误");
        }
        $this->redirect('User/index');
    }
}

我们在Login模块中,在下面的文件

/Admin/Tpl/Login/index.hmtl

中写入以下html代码

<!doctype html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <title>添加用户</title>
    <link href="__ROOT__/bootstrap/css/bootstrap.min.css" rel="stylesheet">
    <script>
        var oForm = document.forms[0];
        function check() {
            if( !oForm.user_name.value ) {
                alert('用户名不能为空');
                return false;
            }
            if( !oForm.user_pwd.value ) {
                alert('密码不能为空');
                return false;
            }
            if( !oForm.vcode.value ) {
                alert('验证码不能为空');
                return false;
            }
        }
    </script>
</head>
<body>
<form class="form-horizontal" role="form" action="__URL__/do_login" method="post" onsubmit="return check();">
  <div class="form-group">
    <label for="user_name" class="col-sm-2 control-label">用户名</label>
    <div class="col-sm-10">
      <input type="text" class="form-control" id="user_name" name="user_name" placeholder="用户名可以由字母数字或汉字组成" />
    </div>
  </div>
  <div class="form-group">  
    <label for="user_pwd" class="col-sm-2 control-label">密码</label>
    <div class="col-sm-10">
      <input type="password" class="form-control" id="user_pwd" name="user_pwd">
    </div>
  </div>
  <div class="form-group">  
    <label for="vcode" class="col-sm-2 control-label">验证码</label>
    <div class="col-sm-10">
      <input type="text" class="form-control" id="vcode" name="vcode"><br />
      <img src="__APP__/Public/verify" onclick='this.src=this.src + "?" + Math.random()' />
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <button type="submit" class="btn btn-default">登陆</button>
    </div>
  </div>
</form>
</body>
</html>

我们看一下效果, ThinkPHP中实现的用户登陆页面

我们今天完成了一个登陆页面,以后我们还要对该页面进行完善。