Yii フレームワークのフォーム検証に関する質問。 Yiiを知っている人はぜひ見に来てください。
Jun 23, 2016 pm 01:55 PM Yii を使用して簡単な小さなブログを作成しています。バックグラウンドでログイン認証を行うと、バグが発生します。
アカウント番号、パスワード、確認コードを空にすることはできません。
そしてデータベースとも一致しません。テストしましたが、データベース接続に問題はありませんでした。
LoginController.php
<?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
<?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 エラー ($ ロジックインフォーム) </ul>
<ul id="psd"> <li class="error"><?php echo $form->error($loginForm,'password') ?> ;/li>
</ul>
<li class="error"><?php echo $form->error($loginForm,'captcha' ) ?></li>
</ul>
これはコンポーネントディレクトリ内の 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'])){ ですか? ? ?
$の書き方も分からない...

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JavaScript を使用してフォームの入力ボックスの内容のリアルタイム検証を実装するにはどうすればよいですか?

JavaScript を使用してフォームの入力ボックスの内容の自動プロンプト機能を実現するにはどうすればよいですか?

HTML、CSS、jQueryを使ってフォームの自動保存という高度な機能を実現する方法

HTML、CSS、jQuery を使用してフローティング プロンプトを持つフォームを作成する方法

Laravel フォームクラスを使用するためのヒント: 効率を向上させる方法
