基於ThinkPHP的開發筆記2-註冊功能2

接上篇
一、將用戶數據存入數據庫
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('操做失敗');
        }
    }
}

 二、判斷某一字段是否已經存在
/**
 * 異步驗證字段是否存在是否已存在
 */
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";
	}
}
相關文章
相關標籤/搜索