海角不转弯

代码是梦想的砖

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

今天开始了自己的zf的开发之旅。

今天碰到了不少问题,也仅仅完成了用户注册和登陆功能。还好都解决了。

1、首先在数据库配置方面,在application/configs/appcation.ini下配置数据库

[mysql]
db.Adapter=MYSQL_PDO
db.params.username=root
db.params.password=root
db.params.dbname=seeclass

然后在需要调用的地方,我是在BaseController.php里面init调用的(用到数据库的控制器类的父类)。

 1     public function init()
 2     {
 3         /* Initialize action controller here
 4          * 初始化数据库适配器
 5          *  */
 6     $url=constant("APPLICATION_PATH").DIRECTORY_SEPARATOR.'configs'.DIRECTORY_SEPARATOR.'application.ini';
 7     $dbconfig=new Zend_Config_Ini($url,"mysql");
 8     $db=Zend_Db::factory($dbconfig->db);
 9     $db->query('SET NAMES UTF8');
10     Zend_Db_Table::setDefaultAdapter($db);
11         
12     


之后如果有用到数据库的控制器的地方,就可以直接调用BaseController.php的BaseController

2、今天主要开发了UserController.php和User数据模型

User.php
<?php
class UserModel extends Zend_Db_Table_Abstract{
    protected $_name="users";
//     //创建用户
 public function createUser($userData){
      if(count($userData)>0){
        unset($userData['password2']);
        $userData['password']=md5($userData['password']);
        $userData['role']='user';
        $userData['status']=1;
        $userData['time_reg']=date('Y-m-d H:i:s');
        $userData['time_last']=date('Y-m-d H:i:s');
    //    print_r($userData);
    $newrow=$this->createRow($userData);//创建一个新行
     $newrow->save();
     //  $newrow->save();
     return $newrow->id;
    }else {
        return false;
    }
     }
 
 public function loginTime($id){
     $row=$this->find($id)->current();
  $row->time_last=date('Y-m-d H:i:s');
  $row->save();
 }
}

 

UserController.php
<?php
require_once 'BaseController.php';
require_once 'forms/User.php';
require_once APPLICATION_PATH.'/models/User.php';
class UserController extends BaseController{
    
    public function registerAction(){
        $formRegister=new Form_user();
        $formRegister->removeElement('avatar');
        $formRegister->removeElement('status');
        $formRegister->removeElement('role');
        $formRegister->removeElement('profile');
        $this->view->formRegister=$formRegister;
        if($this->getRequest()->isPost()){
         if ($formRegister->isValid($_POST)){
             
             $userData=$formRegister->getValues();
             $userModel=new UserModel();
             $id=$userModel->createUser($userData);
             echo $id;
             
         }else{
             exit('不合法') ;
         }
        }
    }
    
    public function loginAction(){
        $formLogin=new Form_user();
        $formLogin->removeElement('sex');
        $formLogin->removeElement('email');
        $formLogin->removeElement('avatar');
        $formLogin->removeElement('password2');
        $formLogin->removeElement('status');
        $formLogin->removeElement('profile');
        $formLogin->removeElement('role');
        $this->view->formLogin=$formLogin;
        
        if(!!$this->getRequest()->isPost()){
            if($formLogin->isValid($_POST)){
        $data=$formLogin->getValues();

    $db=Zend_Db_Table::getDefaultAdapter();
    $authAdapter=new Zend_Auth_Adapter_DbTable($db,'users','username','password');
         $authAdapter->setIdentity($data['username'])->setCredential(md5($data['password']));

    $result=$authAdapter->authenticate();
    if($result->isValid()){
        $auth=Zend_Auth::getInstance();
            $storage=$auth->getStorage();
        $storage->write($authAdapter->getResultRowObject(array(
                'id','username','role')));
            $id=$auth->getIdentity()->id;
        $userModel=new UserModel();
$userModel->loginTime($id);
//             exit();    
     }else {
         $this->view->loginMessage="对不起,你的用户名或密码不符";
     }
        }
    }
    }
}

 3/

可以在model中定义几个查询的方法,这样在控制页中就可以轻松调用。如果查询条件过多(即数据表有多个查询字段)则可以使用array作为$where查询条件。

posted on 2013-03-23 22:56  海角不转弯  阅读(176)  评论(0编辑  收藏  举报