别以为自己是女生,就以为自己做不了程序。世界上第一个程序员 阿达·洛芙莱斯,就是个女士!
知识点
1.表单验证
2.模型操作
版本:thinkphp5.07
已经在 《[登录认证](313753)》章节详细介绍
已经在 《[登录认证](313753)》章节详细介绍
已经在 《[登录认证](313753)》章节详细介绍
已经在 《[登录认证](313753)》章节详细介绍
已经在 《[登录认证](313753)》章节详细介绍
已经在 《[登录认证](313753)》章节详细介绍
注册模板跟登录模板一样呢,都是继承与auth公共模板,代码如下:
~~~
{extend name="auth" /}
{block name="title"}注册{/block}
{block name="auth-title"}用户注册{/block}
{block name="auth-form"}
用户名:
密码:
重复密码:
昵称:
验证码:
{/block}
{block name="auth-submit"}
注册
重置
{/block}
{block name="script"}
$("#userform").validate({
rules: {
username: {
required: true,
},
password: {
required: true,
},
nickname: {
required: true,
},
yzm: {
required: true,
},
},
messages: {
username: {
required: "请输入用户名",
},
password: {
required: "请输入密码",
},
nickname: {
required: "请输入您的昵称",
},
yzm: {
required: "请输入验证码",
},
}
});
{/block}
~~~
永远不要相信用户的数据,所以现在给表单提交添加数据验证。我们添加一个User验证器(位于application/index/validate/User.php),代码如下:
~~~
namespace app\index\validate;
use think\Validate;
class User extends Validate
{
// 验证规则
protected $rule = [
'username' => ['require'],
'password' => ['require'],
'nickname' => ['require'],
];
}
~~~
这里只是一个简单的案例,其实表单验证插件很多,比如日期验证,最大最小验证,甚至是可以自定义验证函数,想要了解更详细的,请参考官方正版教材
http://www.kancloud.cn/thinkphp/thinkphp5_quickstart/147289
if ($user->allowField(true)->validate(true)->save(input('post.'))) {}这段代码allowField函数将清楚一些非字段类表单数据,validate会在保存的时候自动去验证。具体代码如下:
~~~
public function register()
{
if (input('post.')) {
// 首先验证验证码:
$captcha = new \think\captcha\Captcha();
if (!$captcha->check(input('post.yzm'))) {
//注意,如果session设置为二维数组,必须在赋值的时候,将他一维数组session清空。tp5session中存在bug,session不能当数组来使用!
session('message_info',null);
Session::set('message_info.title','注册失败');
Session::set('message_info.content','验证码错误');
$this->redirect(url('/index/auth/register'));
}
$user = new User;
if ($user->allowField(true)->validate(true)->save(input('post.'))) {
session('message_info',null);
Session::set('message_info.title','注册成功');
Session::set('message_info.content','请登录');
$this->redirect(url('/index/auth/login'));
} else {
session('message_info',null);
Session::set('message_info.title','注册失败');
Session::set('message_info.content',$user->getError());
$this->redirect(url('/index/auth/register'));
}
}
return $this->fetch();
}
~~~
---
至此,整个完整登录已经完成。
源码下载地址:https://pan.baidu.com/s/1gfuvePd
thinkphp5学习交流群:536633782