ThinkPHP でのメソッドと自動トークン検証の作成例のチュートリアル、thinkphpcreate_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:20:09
オリジナル
780 人が閲覧しました

ThinkPHP の作成メソッドと自動トークン検証のサンプル チュートリアル、thinkphpcreate

この記事では、ThinkPHP での create メソッドと自動トークン検証の実装を例の形で示します。具体的な手順は次のとおりです。

1. データテーブルの構造

ユーザーテーブルの構造は次のとおりです:

ID ユーザー名 パスワード

2. テンプレート部分を表示します

aoliHomeTpldefaultUsercreate.html ページは次のとおりです:

リーリー

3. アクション部分:

aoliHomeLibAction.php ページは次のとおりです:

リーリー
1. フォームによって送信されたデータを操作する前に、上記で送信されたフォーム データなどの必要なデータを手動で作成する必要があることがよくあります。


リーリー

添付ファイル: データ メソッドを使用して作成されたデータ オブジェクトは自動的に検証およびフィルタリングされないため、自分で処理する必要があります。単にデータ オブジェクトを作成するだけで、追加の関数を実行する必要がない場合は、データオブジェクトを作成するだけの data メソッド。

2. ThinkPHP は、データ オブジェクトを迅速に作成するのに役立ちます。最も一般的なアプリケーションは、フォーム データに基づいてデータ オブジェクトを自動的に作成することです。 create メソッドによって作成されたデータ オブジェクトはメモリに保存され、実際にはデータベースに書き込まれません。

リーリー

3. create メソッドは、他のデータ オブジェクトや配列などからのデータ オブジェクトの作成をサポートします。

リーリー

4. データ オブジェクトの作成中に、create メソッドはトークン検証、自動データ検証、フィールド タイプ検索、自動データ補完などのいくつかの意味のある作業も完了します。

したがって、私たちがよく知っているトークン検証、自動検証、および自動完了機能を有効にするには、実際に create メソッドを使用する必要があります。

5. トークンの検証:

機能: フォームのリモート送信やその他のセキュリティ保護を効果的に防止できます。

次の設定を config.php に追加します。

リーリー

自動トークンは、md5 暗号化文字列を現在の SESSION セッションに挿入します。そして、この文字列をフォームの前の隠しフィールドのフォームに挿入します。この文字列は 2 つの場所に表示されます。1 つは SESSION 内、もう 1 つはフォーム内です。フォームを送信すると、サーバーは最初に SESSION 情報を比較し、それが正しければフォームの送信が許可され、そうでない場合は送信が許可されません。

create.htmlのソースコードを見ると、フォームの終了マークの前に自動生成された隠しフィールドがあることがわかります


リーリー

(1) 隠しフィールドの場所を制御したい場合は、フォーム ページに {__TOKEN__} マークを手動で追加できます。これにより、テンプレートの出力時にシステムが自動的に置き換えます。

(2). フォームのトークン検証がオンになっている場合、個々のフォームでトークン検証を使用する必要はありません

関数を使用して、フォーム ページに {__NOTOKEN__} を追加すると、システムは現在のフォームのトークン検証を無視します。


(3). ページ上に複数のフォームがある場合は、{__TOKEN__} 識別子を追加し、トークン検証が必要なフォームが 1 つだけであることを確認することをお勧めします。

(4) create メソッドを使用してデータ オブジェクトを作成すると、同時にフォーム検証が自動的に実行されます。このメソッドを使用しない場合は、フォーム検証用のモデルの autoCheckToken メソッドを手動で呼び出す必要があります。


リーリー

この記事で示した例が皆様の ThinkPHP プログラミング設計に役立つことを願っています。

ThinkPHP: create() メソッドの用途は何ですか?

1.create メソッドは、POST によって送信されたデータを処理できます (テーブル内のフィールド名とフォームによって送信された名前の間の対応関係を通じて、データ インスタンスを自動的にカプセル化します)。たとえば、「username」という名前のフィールドがあります。ユーザーテーブル 2. フォームの繰り返し送信を防ぐために、create メソッドを使用してフォームのトークン検証を実行します。
3. データは自動的に検証できます。前提条件として、Model フォルダーに UserModel.class.php ファイルを手動で作成し、それに検証ルールを追加する必要があります。
protected $_validate = array('username',' require ','Username should be', 1),
);
4. フィールドには自動的に値を割り当てることができますが、前提条件として、Model フォルダーに UserModel.class.php ファイルを手動で作成し、
protected $ を追加する必要があります。 _auto = array (
array('create_time','time',self::MODEL_INSERT,'function'),
);
すると、ユーザーの登録時刻が現在時刻に自動的に割り当てられます

のソースコードを添付します作成メソッド:
/**
* データオブジェクトを作成しますが、データベースには保存しません
* @access public
* @parammixed $data データを作成します
* @param string $type status
* @returnmixed
*/
public function create($data='' ,$type='') {
// 値が渡されない場合、デフォルトで POST データが取得されます
if(empty($data)) {
$data = $_POST;
}elseif(is_object($data)){
$data = get_object_vars($data);
}
// データを検証
if(empty($data) || !is_array($data)) {
$this- >error = L('_DATA_TYPE_INVALID_');
return false ;
}

// フィールドマッピングを確認します
$data = $this->parseFieldsMap($data,0);

// ステータス
$type = $type?$type:(!empty($data[$ this->ge...残りのテキスト>>

thinkphp の自動検証で次のエラー メッセージが表示されます: _TOKEN_ERROR_ とはどういう意味ですか?

ThinkPHP の新しいバージョンには、フォーム トークン検証機能が組み込まれており、フォームのリモート送信やその他のセキュリティ保護を効果的に防止できます。


フォーム トークン検証に関連する構成パラメーターは次のとおりです: 'TOKEN_ON'=>true, // トークン検証を有効にするかどうか 'TOKEN_NAME'=>'__hash__', // トークン検証用のフォームの非表示フィールド名 'TOKEN_TYPE' = >'md5', //デフォルトのトークン ハッシュ検証ルールは MD5 です。フォーム トークン検証機能がオンになっている場合、システムはフォームのテンプレート ファイルに TOKEN_NAME という名前の隠しフィールドを自動的に生成します。その値は It です。 TOKEN_TYPE モードで生成されたハッシュ文字列で、フォームの自動トークン検証を実装するために使用されます。自動生成された隠しフィールドはフォーム終了マークの前に配置されます。隠しフィールドの位置を制御したい場合は、フォーム ページにマークを手動で追加すると、テンプレートの出力時にシステムが自動的に置き換えます。フォームのトークン検証がオンになっており、個々のフォームでトークン検証機能を使用する必要がない場合は、フォーム ページに {__NOTOKEN__} を追加すると、システムは現在のフォームのトークン検証を無視します。ページ上に複数のフォームがある場合は、ID を追加し、トークン検証が必要なフォームが 1 つだけであることを確認することをお勧めします。モデル クラスは、データ オブジェクトの作成時にフォーム トークン検証を自動的に実行します。データ オブジェクトの作成に create メソッドを使用しない場合は、モデルの autoCheckToken メソッドを手動で呼び出してフォーム トークン検証を実行する必要があります。 false が返された場合は、フォーム トークン検証エラーを示します。例: $User = M("User"); // ユーザー オブジェクトをインスタンス化します // トークン検証を手動で実行します if (!$User->autoCheckToken($_POST)){// トークン検証エラー

http://www.bkjia.com/PHPjc/868237.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/868237.html技術記事 ThinkPHP、thinkphpcreate での create メソッドと自動トークン検証のサンプルチュートリアル この記事では、ThinkPHP での create メソッドと自動トークン検証の実装方法を例の形式で示します。具体的な手順は次のとおりです...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート