2016-05-23 18 views
0

私はYiiに非常に新しいです。
Xamppサーバーにyii 1.1.13バージョンがインストールされました。私は "My Web Application"ページを見ることができます。yiiでデータベースからのユーザー名とパスワードを確認する方法1.1.13

ログインフォームが表示されます。今、データベースに保存されているユーザー名とパスワードの助けを借りてログインしたいと思います。どうしたらいいのだろう?
チュートリアルを確認しましたが、わかりません。それについて誰でも説明してください。

My Screenshot of the web page.

+0

こんにちはJebil、あなたはまだ試してみてください。良い答えを得るより良いチャンスは、今のところ、これは懐疑的な答えを生むかもしれません。 – dubes

+0

フォーマットされた投稿+削除ありがとう –

+0

私はmain.phpのデータベース名を変更しました。 protected/configフォルダの下にあります。私は自分のデータベースからユーザー名とパスワードを確認する必要があります。しかし、私はどのように知りません。私はuseridentity.phpファイルで保護されている/コンポーネントのフォルダにする必要があると思う。 – Jebil

答えて

0

あなたは一例Userと、このテーブルに対応するモデルのために、ユーザー名とパスワードデータを格納するデータベース内のテーブルを持っている必要があります。モデルファイルはデフォルトでprotected/modelsに保存されます。

あなたが言及したように、あなたはUserIdentityクラスに留意しました。それをprotected/componentsに入れてください。このメソッドには、プライベート$_id変数、この変数のgetter、および認証を担当するauthenticateメソッドが必要です。これを確認してください:

class UserIdentity extends CUserIdentity 
{ 
    private $_id; 
    public function authenticate() 
    { 
     $record=User::model()->findByAttributes(array('username'=>$this->username)); 
     if($record===null) 
      $this->errorCode=self::ERROR_USERNAME_INVALID; 
     else if($record->password!==md5($this->password)) 
      $this->errorCode=self::ERROR_PASSWORD_INVALID; 
     else 
     { 
      $this->_id=$record->id; 
      $this->setState('title', $record->title); 
      $this->errorCode=self::ERROR_NONE; 
     } 
     return !$this->errorCode; 
    } 

    public function getId() 
    { 
     return $this->_id; 
    } 
} 

したがって、authenticateメソッドではどうなりますか? Userテーブルからレコードを検索し、変数に割り当てます。レコードが見つからない場合は、ユーザー名が無効であるというエラーを追加します。 if..elseif..elseの次の要素はパスワードを比較します:DBからのパスワードが入力されたパスワードのmd5関数によってハッシュされたものと等しくない場合、エラーを間違ったパスワードを追加します。 (この場合、md5でハッシュされたパスワードをDBに保存する必要があることを覚えておいてください!)エラーがなければ、ユーザーは正しいデータを入力し、IDとセッション情報を設定できます。

あなたのコードを変更すれば、DBに保存されたデータでauthenticeを使うことができると思います。

関連する問題