重定向后控制器丢失模型(自动加载)实例

时间:2014-04-18 02:15:05

标签: php codeigniter redirect

自动加载中添加了用户模型。并且因为将Contorller跳转到另一个控制器以改变视图,如移动登录到启用是不可能的,我使用重定向。但是在重定向之后,用户模型的成员值丢失了。

Login.php(Controller)

public function login_process()
{
  $post = array();
  $data = $this->input->post();
  $account = $data['email'];

  $result = $this->user->authenticate($account, $data['password']);

  if ($result) {
    $email = $this->user->email;

      if ($this->user->email_confirmation_validation($email)) {
        redirect('/login/form/');
      }
      else {
        redirect('/activation/email_validation_gate/);
      }
  }
  else {
    redirect('/login/big_login_gate');
  }

}

调用重定向('/ activation / email_validation_gate /'); 用户模型的数据丢失。

class User extends CI_Model
{
  const COLLECTION = 'users';
  private $_mongo;
  private $_collection;
  private $_user;

  ....

  public function __get($attr)
  {
      if (empty($this->_user)) {
          var_dump($this->_user);
          return Null;
        }

        switch($attr) {
              case 'email':
                return $this->_user['email'];
          case 'last_name':
                return $this->_user['last_name'];
          case 'first_name':
                return $this->_user['first_name'];
          case 'password':
                return NULL;
          default:
                return (isset($this->_user[$attr])) ? $this->_user[$attr] : NULL;
          }
  }


  public function load_data($user_id)
  {
    //$id = new MongoId($user_id);
    $this->_user = $this->_collection->findOne(array('_id'=>$user_id));
    var_dump('Mongo : '.$this->_user);
  }
}
登录调用

load_data ,并将用户信息保存到_user。重定向后,用户模型全部消失了。即使它是自动加载的。

Followin是用户模型转储 - var_dump($ this-> user);

 array(8) { ["_id"]=> object(MongoId)#28 (1) { ["$id"]=> string(24) "5349f7acc69c40282b000029" } ["first_name"]=> string(9) "First Name" ["last_name"]=> string(3) "Last" ["password"]=> string(60) "$2y$10$Qd4aV95A/kAWmMgQg/rJZ.iLCBo10XQeTZ0JgWdhjsblgHc4kQYpG" ["email"]=> string(14) "test@test.com" ["birthday"]=> object(MongoDate)#29 (2) { ["sec"]=> int(336927600) ["usec"]=> int(0) } ["country"]=> string(2) "KR" ["gender"]=> string(4) "male" }

重定向后。

object(User)#16 (3) { ["_mongo":"User":private]=> object(DBConnection)#19 (2) { ["connection"]=> object(MongoClient)#20 (4) { ["connected"]=> bool(true) ["status"]=> NULL ["server":protected]=> NULL ["persistent":protected]=> NULL } ["database"]=> object(MongoDB)#21 (2) { ["w"]=> int(1) ["wtimeout"]=> int(10000) } } ["_collection":"User":private]=> object(MongoCollection)#22 (2) { ["w"]=> int(1) ["wtimeout"]=> int(10000) } ["_user":"User":private]=> NULL } 

如上所示,重定向后所有数据都消失了。

0 个答案:

没有答案