2.8 注册

第 15 节 / 共 46 节 课程:ThinkPHP
注册的实质,就是在users表新增一条记录。
第一步,前端(网页)把邮箱、密码发送到后台
第二步,后台接收到邮箱、密码,往数据表users添加一条数据

这里涉及到一些细节,例如邮箱不能重复,那么就需要先查询一次数据库看是否存在,如果存在那么此邮箱不得注册,为了测试方便,把邮箱发送验证码这个步骤省略。
以下这个函数,已经在/public/js/woniunote.js里面
function doReg(e){
    if(e != null && e.keyCode != 13){
        return false;
    }
    //取得发过来的注册邮箱
    regname=$.trim($("#regname").val());
    //取得发过来的密码
    regpass=$.trim($("#regpass").val());
    //取得发过来的验证码
    regcode=$.trim($("#regcode").val());
    if( ! regname.match(/.+@.+\..+/)|| regpass.length < 5){
        bootbox.alert({
            title:"错误提示",
            message:"注册邮箱不正确或密码少于5位."
        });
        return false;
    }
    else{
        // 构建POST请求的正文数据
        param="username="+regname;
        param+="&password="+regpass;
        param+="&ecode="+regcode;
        // 利用jQuery框架发送POST请求,并获取到后台注册接口的响应内容
        $.post('/user',
        param,
        function(data){
            if(data=="ecode-error"){
                bootbox.alert({
                    title:"错误提示",
                    message:"验证码无效."
                });
                $("#regcode").val('');
                // 清除验证码框的值
                $("#regcode").focus();
                // 让验证码框获取到焦点供用户输入
            }
            else if(data=="up-invalid"){
                bootbox.alert({
                    title:"错误提示",
                    message:"用户名和密码不能少于5位."
                });
            }
            else if(data=="user-repeated"){
                bootbox.alert({
                    title:"错误提示",
                    message:"该用户名已经被注册."
                });
                $("#regname").focus();
            }
            else if(data=="reg-pass"){
                bootbox.alert({
                    title:"信息提示",
                    message:"恭喜你,注册成功."
                });
                // 注册成功后,延迟1秒钟重新刷新当前页面即可
                setTimeout('location.reload();',
                1000);
            }
            else if(data=="reg-fail"){
                bootbox.alert({
                    title:"错误提示",
                    message:"注册失败,请联系管理员."
                });
            }
        });
    }
}

1.发起请求
注册的按钮目前是没有任何反应的,和当初的登录一样,它没有把事件函数绑定,找到注册所在的代码:
<b>仿照登录调用doLogin的方式,注册按钮调用doReg</b>
从上面的DoReg函数可以看出,post方式把数据发送到/user

二,后台接收数据并处理
接下来要做的工作。
1.在Demo.php写一个函数register负责处理/user请求。记得在route/app.php里面绑定
2.register函数首先检查发过来的邮箱,看是否已经注册过,如果已经注册过,函数返回“user-repeated”,注册失败
3.如果上面检查通过,要在users表添加一行数据,参照登录的处理方式,可能需要在model/user.php里面添加新增一条记录的函数
4.注册成功,返回“reg-pass”,其他情况注册失败,返回“reg-fail”