Yii フレームワークのフォーム検証に関する質問。 Yiiを知っている人はぜひ見に来てください。

WBOY
リリース: 2016-06-23 13:55:39
オリジナル
823 人が閲覧しました

Yii を使用して簡単な小さなブログを作成しています。バックグラウンドでログイン認証を行うと、バグが発生します。
アカウント番号、パスワード、確認コードを空にすることはできません。
そしてデータベースとも一致しません。テストしましたが、データベース接続に問題はありませんでした。

LoginController.php
/**
*バックエンドログインコントローラー
*/
class LoginController extends Controller{
/**
*バックエンドログインテンプレート
*/
public function actionIndex(){
$loginForm = new LoginForm();
if(isset($_POST['$LoginForm'])){
$loginForm->attributes = $_POST['LoginForm'];
if($loginForm->validate()){
echo 1;die ;
}
}
$this->render('index',array('loginForm' => $loginForm));

public function events(){
return array(
'captcha' => ; array(
'class' => 'system.web.widgets.captcha.CCaptchaAction',
'height' => 25,
'width' => 80,
'minLength' => 4,
'maxLength' => 4,
'offset' => 3,
'padding' => 1
),
}

これは、User.php
*バックエンドユーザーモデル
*/
class User extends CActiveRecord{
/**
* 必須のメソッド 1、モデルを返す
*/
public static function model($className = __CLASS__){
returnparent::model($className) }

; /**
* 避けられない方法 2 は、テーブル名を返すことです
*/
public function tableName(){
return "{{user}}";
}
}

これは LoginForm.php のメソッドです
public function rules()
{
return array (
// ユーザー名とパスワードは必須です
array('username', 'required', 'message' => 'ユーザー名は空にすることはできません'),
array('password', 'required', 'message' => ; 'パスワードを空にすることはできません'),
// rememberMe はブール値である必要があります
array('rememberMe', 'boolean'),
// パスワードは認証される必要があります
array('password', 'authenticate' ),
//カスタマイズされたエラーメッセージ
array('captcha', 'captcha', 'message' => '認証コードエラー'),
);
}

エラーメッセージを出力するページです。index.php & Lt ; ul ID = "peo" & gt; & lt; li class = "エラー" & gt; PHP エラー ($ ロジックインフォーム)

  • error($loginForm,'password') ?> ;/li>

  • error($loginForm,'captcha' ) ?>



  • これはコンポーネントディレクトリ内の UserIdentity.php
    /**
    * UserIdentity は、ユーザーを識別するために必要なデータを表します。
    * 提供された
    * データがユーザーを識別できるかどうかを確認する認証メソッドが含まれています。
     */
    class UserIdentity extends CUserIdentity
    / **
    * ユーザーを認証します。
    * 実装例では、ユーザー名とパスワード
    * が両方とも「デモ」であるかどうかを確認します。
    * 実際のアプリケーションでは、一部の永続的なユーザー ID ストレージ(データベースなど)に対して
    * を認証するようにこれを変更する必要があります。
    * @return boolean 認証が成功したかどうか。
     */
    パブリック関数authenticate()
    {
    $userInfo = User::model()->find('username = :name', array(':name' => $this->username));
    if($userInfo == NULL){
    $this->errorCode = self::ERROR_USERNAME_INVALID;
    return false; }
    if($userInfo->password !== md5($this->password)){
    $this->errorCode = self ::ERROR_PASSWORD_INVALID;
    return false;
    }
    $this->errorCode = self::ERROR_NONE;
    return true;


    正確に何が問題でしたか?全然。
    エラーメッセージが書かれてもプロンプトは出ず、ログイン認証も行われないのが現状です。確認コードを置き換えることができることを除けば、完全に静的ページと同じです。


    ディスカッションに返信 (解決策)
    if(isset($_POST['$LoginForm'])){ ? ? ?

    if(isset($_POST['LoginForm'])){


    if(isset($_POST['$LoginForm'])){ ですか? ? ?

    それは if(isset($_POST['LoginForm'])){


    はい、そうです。ありがとう、ありがとう...
    $の書き方も分からない...
    関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート