基于ThinkPHP的开发笔记2-注册功能2

接上篇
1、将用户数据存入数据库
public function runRegis(){
	if(!$this->isPost()){
		halt('页面不存在');
	}

	$User= D('User');
	$User->createTime=date('Y-m-d H:i:s',time());
	$User->modifyTime=date('Y-m-d H:i:s',time());
    $result = $User->add();
    if($result) {
        $this->success('操作成功!');
    }else{
        echo($result);
    }
}
其中用到了TP的D函数,并且有手动给字段赋值的操作。但是如果在add()之前有用create()进行判断,赋值操作就失效了,示例代码如下:
if($User->create()) {
    $result = $User->add();
    if($result) {
        $this->success('操作成功!');
    }else{
        echo($result);
    }
}else{
    $this->error($User->getError());
}
赋值操作应该在create之后,修改如下
public function runRegis(){
	if(!$this->isPost()){
		halt('页面不存在');
	}
	$User= M('User');
	if($User->create()) {
		$User->createTime=date('Y-m-d H:i:s',time());
		$User->pwd=$this->_post('pwd', 'md5');
	    $id = $User->add();
        if($id) {
            session('uid',$id);
            //跳转至首页
            header('Content-Type:text/html;Charset=UTF-8');
            redirect(__APP__, 2,'注册成功,正在为您跳转...');
        }else{
            halt('操作失败');
        }
    }
}

 2、判断某一字段是否已经存在
/**
 * 异步验证字段是否存在是否已存在
 */
public function checkUnique(){
	if (!$this->isAjax()) {
		halt('页面不存在');
	}
	$cName = $this->_get('cName');
	$cValue = $this->_post($cName);
	$where = array($cName=>$cValue);
	if(M('user')->where($where)->getField('id')){
		echo 'false';
	}else {
		echo "true";
	}
}

TP3.1.3增加了I函数,据说更为安全,是官方推荐使用的,修改写法如下
/**
 * 异步验证字段是否已存在
 */
public function checkUnique(){
	if (!$this->isAjax()) {
		halt('页面不存在');
	}
	$cName = I('get.cName');
	$cValue = I('post.'.$cName);
	$where = array($cName=>$cValue);
	if(M('user')->where($where)->getField('id')){
		echo 'false';
	}else {
		echo "true";
	}
}

你可能感兴趣的:(基于ThinkPHP的开发笔记2-注册功能2)