基于TP5框架开发的
控制器:
/**
* 前台用户注册模块
*/
public function register()
{
if(request()->isPost()){
$data = input('post.');
//validate校验
$validate=validate('User');
if (!$validate->scene('register')->check($data)){
$this->error($validate->getError());
}
//验证码校验
if(!captcha_check($data['verifycode'])) {
$this->error('验证码不正确');
}
if($data['password'] != $data['repassword']) {
$this->error('两次输入的密码不一样');
}
// 加盐加密
$data['code'] = mt_rand(100, 10000);
$data['password'] = md5($data['password'].$data['code']);
try {
$res = model('User')->add($data);
}catch (\Exception $e) {
$this->error($e->getMessage());
}
if($res) {
// 本身就会抛异常
$this->success('注册成功',url('user/login'));
}else{
$this->error('注册失败');
}
}
return $this->fetch();
}
模型里面的添加操作:
/**
* 将前台用户注册信息存入数据库
* @param array $data
* @return false|int
*/
public function add($data = []) {
// 如果提交的数据不是数组
if(!is_array($data)) {
exception('传递的数据不是数组');
}
$data['status'] = 1;
return $this->data($data)->allowField(true)
->save();
}
验证码html:
<div><img src="{:captcha_src()}" alt="captcha" onclick="reloadcode(this)"//></div>
点击刷新验证码:
<script>
// 刷新验证码
function reloadcode(obj) {
obj.src="/captcha?id="+Math.random();
}
</script>