2016-10-03 9 views
0

ウェブサイト上のページを更新するときにログインした後、時には完全に動作しますが、モデルやコントローラファイルの異なる行にプロパティを取得しようとするなどのエラーが表示されることがあります。例えば時々、非オブジェクトのプロパティを取得しようとしています

、iはページエラーがUser.php命名user_modelおよびコントローラというモデルの機能の下に示されたリフレッシュ:

User_model.php:

public function get_client_id($email) 
    { 

     $this->db->select('id'); 
     $this->db->where('email', $email); 
     $query = $this->db->get('crm_accounts'); 
     $result = $query->row(); 
     return $result->id; //line 135 
    } 

Users.php:

$email = $_SESSION['email']; 
$id = $this->user_model->get_client_id($email); //line 145 

ログイン後にセッション値を設定する:

   $email = $this->input->post("email"); 
       $password = $this->input->post("pass"); 
       $result = $this->user_model->login($email, $password); 
       if ($result == TRUE) 
       { 
       $this->session->set_userdata('email',$email); 
       $this->session->set_userdata('logged_in',TRUE); 

        $data = $this->user_model->get_username($email); 
        $this->session->set_userdata('data', $data); 
        redirect('admin_view'); 
       } 
       else 
       { 
        $this->load->view('all_field'); 
       } 
01ログアウト後にセッションを削除する

コード:ここで

$logged_in = $this->session->userdata('logged_in'); 
    $log = $this->session->userdata('email'); 
     if($logged_in || (!empty($log))) 
     { 
      $array_item = array('email', 'logged_in'); 
      $this->session->unset_userdata($array_item); 
      redirect(''); 
     } 
     else 
     { 
      $this->load->view('error_page'); 
     } 

、私はuser_model.phpのライン135上の非オブジェクトのプロパティを取得するために トリングのようにエラーを持って、バックトレースにそれがユーザーにエラーを検出しました.php on line 145

私はモデルでこのタイプのエラーが発生したとき、セッションデータ$ emailを使用してその特定のメソッドでデータを取得していることに気付きました。しかし、私はコントローラーにそのような条件を入れました:

public function index() 
    { 
     if(!empty($_SESSION['email'])) 
     { 
      $email = $_SESSION['email']; 
      $data = $this->user_model->get_username($email); 
      $this->session->set_userdata('data',$data); 
      redirect('clientview'); 
      //echo "You are already logged in";    
     } 
     else 
     { 
      $this->load->view('signup'); 
     } 
    } 

したがって、セッション変数$ emailの値がサインアップページに行くよりも高く設定されていないとします。

私は実際に何が問題になっているのか分かりません。ときどき完璧に動作することもあります。一度そのようなエラーが出たら、私は履歴を消去しなければならず、もう一度ログインする必要があります。

答えて

0

Codeigniterには、セッションでフォームを取得したり、値を設定する方法があります。

セッションは、あなたが格納されている値を取得します

$this->session->userdata('email'); 

を行う必要が存在するかどうかを確認したい場合。 あなたがすでに行っているように:

$this->session->set_userdata('email', $email); 

セッションに値を設定します。

さらに、ユーザーがログアウトして保存された値をリセットする必要がある場合、それは決して空ではありません。

$ this-> session-> set_userdata( 'email'、 '');

注:ログインやログアウトシステムなど、このような種類の操作を行う最良の方法ではありません。私はあなたが学習していると仮定し、これをプロダクションアプリケーションではなく実行しています。

http://benedmunds.com/ion_auth/

をし、それについていくつかのチュートリアルは、次のとおりです。:

そうした場合、あなたはここで見つけることができ、CodeigniterためionAuth認証ライブラリを使用してみてください

http://www.tutorials.kode-blog.com/codeigniter-authentication

をユーザー認証は深刻なセキュリティ上の問題なので、注意してください。

+0

ありがとうフランコ。あなたは私が学んでいると言いました。だから、あなたの指示に感謝します。 –

+0

しかし、私はログアウトした後、私はunset()メソッドでセッションをクリアしていると言いたい。私の問題とログアウトの間には何らかの関係がありますか? –

+0

'Codeigniter'セッションルールに従う必要があります。セッション$ this-> session-> set_userdata( 'email'、 '"");をリセットしなければならないと言ったので、あなたの問題はここにあります:if(!empty($ _ SESSION [' email '])) – Franco

関連する問題