注册Model类

根据username查找是否存在相同的用户名的方法

自动填充功能填充注册时间字段

如果两次输入的密码一直则写入数据库的方法

userModel.class.php

<?php
/****
燕十八 公益PHP讲堂

论  坛: http://www.zixue.it
微  博: http://weibo.com/Yshiba
YY频道: 88354001
****/



defined('ACC')||exit('Acc Deined');


class UserModel extends Model {
    protected $table = 'user';
    protected $pk = 'user_id';
	protected $_valid=array(
		array('username',1,'用户名必须存在','require'),
		array('username',0,'用户名必须在4-16字符内','length','4,16'),
		array('email',1,'email非法','require'),
		array('passwd',1,'passwd不能为空','require')
	);
	protected $_auto=array(
		array('regtime','function','time'),
	);
	//自动填充
	public function _autoFill($data){
		foreach($this->_auto as $k=>$v){
			if(!array_key_exists($v[0],$data)){
				switch ($v[1]){
					case 'value':
						$data[$v[0]]=$v[2];
					break;
					case 'function':
						$data[$v[0]]=call_user_func($v[2]);
					break;
				}
			}
		}
		return $data;
	}
	 /*
        用户注册
    */
    public function reg($data) {
        if($data['passwd']) {
            $data['passwd'] = $this->encPasswd($data['passwd']);
        }

        return $this->add($data);
    }
    
    
    protected function encPasswd($p) {
        return md5($p);
    }

    /*
    根据用户名查询用户信息
    */
    public function checkUser($username) {
        $sql = 'select count(*) from ' . $this->table . " where username='" .$username . "'";
        return $this->db->getOne($sql);
    }

}


 父类所增加的方法

/*
        格式 $this->_valid = array(
                    array('验证的字段名',0/1/2(验证场景),'报错提示','require/in(某几种情况)/between(范围)/length(某个范围)','参数')
        );

        array('goods_name',1,'必须有商品名','requird'),
        array('cat_id',1,'栏目id必须是整型值','number'),
        array('is_new',0,'in_new只能是0或1','in','0,1')
        array('goods_breif',2,'商品简介就在10到100字符','length','10,100')

    */
    public function _validate($data) {
        if(empty($this->_valid)) {
            return true;
        }

        $this->error = array();

        foreach($this->_valid as $k=>$v) {
            switch($v[1]) {
                case 1:
                    if(!isset($data[$v[0]])) {
                        $this->error[] = $v[2];
                        return false;
                    }
                    
                    if(!$this->check($data[$v[0]],$v[3])) {
                        $this->error[] = $v[2];
                        return false;
                    }
                    break;
                case 0:
                    if(isset($data[$v[0]])) {
                        if(!$this->check($data[$v[0]],$v[3],$v[4])) {
                            $this->error[] = $v[2];
                            return false;
                        }
                    }
                    break;
                case 2:
                    if(isset($data[$v[0]]) && !empty($data[$v[0]])) {
                        if(!$this->check($data[$v[0]],$v[3],$v[4])) {
                            $this->error[] = $v[2];
                            return false;
                        }
                    }
            }
        }

        return true;

    }
	public function getErr(){
        return $this->error;
    }

    protected function check($value,$rule='',$parm='') {
        switch($rule) {
            case 'require':
                return !empty($value);

            case 'number':
                return is_numeric($value);

            case 'in':
                $tmp = explode(',',$parm);
                return in_array($value,$tmp);
            case 'between':
                list($min,$max) = explode(',',$parm);
                return $value >= $min && $value <= $max;
            case 'length':
                list($min,$max) = explode(',',$parm);
                return strlen($value) >= $min && strlen($value) <= $max;
            case 'email':
                // 判断$value是否是email,可以用正则表达式,但现在没学.
                // 因此,此处用系统函数来判断
                return (filter_var($value,FILTER_VALIDATE_EMAIL) !== false);
            default:
                return false;
        }
    }

 controller页面

<?php
/****
燕十八 公益PHP讲堂

论  坛: http://www.zixue.it
微  博: http://weibo.com/Yshiba
YY频道: 88354001
****/


/***
regAct.php
作用:接收用户注册的表单信息,完成注册
***/

//print_r($_POST);


define('ACC',true);
require('./include/init.php');
//print_r($_POST);
$user=new UserModel();
$data=$user->_facade($_POST);
$data=$user->_autoFill($data);

if(!$user->_validate($_POST)) {  // 自动检验
    $msg = implode('<br />',$user->getErr());
    include(ROOT . 'view/front/msg.html');
    exit;
}


// 检验用户名是否已存在
if($user->checkUser($_POST['username'])) {
    $msg = '用户名已存在';
    include(ROOT . 'view/front/msg.html');
    exit;
}


if($user->add($data)){
	echo '注册成功';
	echo "<a href='./zhuce.php'>返回登录</a>";
}else{
	echo '注册失败';
}


?>







原文地址:https://www.cnblogs.com/lzzhuany/p/4801912.html