2016-05-14 9 views
0

私は問題がありますが、私はちょっと調べましたが、私の特別なケースで私を助けるものは何も見つかりませんでした。PHPのログインとセッションの確立

私はlog()をログに記録するための小さな関数を作成しましたが、変数$ usernameと$ passwordを変数に入れて、すべて動作します。

問題は、昨夜、セッションの経過後にコードの文字列を挿入したり、setcookieなどのコードを挿入したりして、ユーザーの接続が長時間続くことを信じていたためです私は専門家ではない)。

今朝はセッションがタイムリーに行われましたが、新しいログインが行われましたが、データは渡されません。 (したがって、ユーザーアカウントボックスはユーザー名などで更新されません)。

私はいくつかのコード投稿します:

class User { 

    private $db; 
    private $username; 
    private $password; 

    /** 
    * Construct 
    * @param type $pdo 
    */ 
    function __construct($pdo){ 
     $this->db = $pdo; 
    } 

    public function login($username, $password){ 
     $this->db->query("SELECT * FROM users WHERE username = :username AND status = :status LIMIT 1"); 
     $this->db->bind(':username', $username); 
     $this->db->bind(':status', 1); 
     $row = $this->db->single(); 
     $count = $this->db->rowCount(); 
      if ($count > 0) { 
       if (password_verify($password, $row['password'])) { 
        $_SESSION['session'] = [ 
         'id' => $row['id'], 
         'username' => $row['username'], 
         'email' => $row['email'], 
         ]; 
        return true; 
       } else { 
        return false; 
       } 
      } 
    } 


    public function isLoggedIn() { 
     if (isset($_SESSION['session'])) { 
      return true; 
     } 
    } 

を私は何が起こったのか理解していない、私は私の悪い英語のために謝罪、私は最大限に説明することを願っています。

また別の質問ですが、ページを保護するのに十分安全ですか? トークンを登録するように指示されたユーザーもいますが、その操作方法はわかりません。

+0

フレームワークを使用していますか? –

+0

いいえ、このクラスのPDOをクエリに使用します:http://culttt.com/2012/10/01/roll-your-own-pdo-php-class/ –

答えて

0

は、 ""

を取り除くのメール '=> $行[ 'メール']の後

を試してみてください

そして、はい、そうでない場合はありがとうセッションを開始しました。

<?php session_start() ?> 
+0

私はすでに試していましたが、何もしませんでした。 –

0

()のsession_start()の代わりに、彼らは私たちは、各ページの先頭 で開くセッションから取得され 、

セッション変数は、それぞれの新しいページに個別に渡されていないPHPのセッション変数の値を取得します

ストレートhttp://www.w3schools.com/php/php_sessions.asp。あなたの場合は、sessionを開始する必要があります。 session_start();を使用してセッションを開始できます。しかし、あなたのスクリプトの冒頭でそれを一度やってください。

+0

最近、スクリプトが正しく機能していると述べているので、これまでのこと全てを行っています。 –

+0

@MarcoBonannoあなたがすべてがOKであると言っているときに 'if(password_verify($ password、$ row ['password']))'の条件が真であるかどうかを最初に確認してください。 –

+0

セッションが正常にパスされたのを見ましたリダイレクトが同じページにログインしているときにセッションが何も渡されない間に、ログイン後に他のページ、account.php/index.phpなどにページをリダイレクトするなどの理由がわかりません! –

関連する問題