この記事では、ThinkPHP の作成メソッドと自動トークン検証を主に紹介します。これは非常に重要な目的を持っています。
この記事では、ThinkPHP の作成メソッドと自動トークン検証を例として示します。実装方法、具体的な手順は次のとおりです:
1. データテーブルの構造
ユーザーテーブルの構造は次のとおりです:
id ユーザー名 パスワード
2. ビューテンプレート部分
aoliHomeTpldefaultUsercreate .html ページは次のとおりです:
<form action="__URL__/addit" method="post"> <input type="text" name="id" /> <input type="text" name="username" /> <input type="password" name="password" /> <input type="submit" name="sub" value="提交" /> </form>
3. アクション部分:
aoliHomeLibAction.php ページは次のとおりです:
<?php class UserAction extends Action { function create(){ $this->display(); } function addit(){ //向表user中添加表单内容 $user=M('user'); $user->create(); $user->add(); //判断是否存在令牌验证 if(!$user->autoCheckToken($_POST)){ dump('no'); }else{ dump('yes'); } } ?>
1. フォームによって送信されたデータを操作する前に、必要なデータを手動で作成する必要があることがよくあります。 、上記で送信されたフォーム データなど:
//实例化User模型 $user=M('user'); //获取表单的POST数据 $data['username']=$_POST['username'] $data['password']=$_POST['password'] //写入到数据库 $user->data($data)->add();
添付: データ メソッドを使用して作成されたデータ オブジェクトは自動的に検証およびフィルタリングされないため、単にデータ オブジェクトを作成するだけで必要ない場合は、自分で処理する必要があります。いくつかの追加関数を実行する必要がある場合は、data メソッドを使用してデータ オブジェクトを簡単に作成できます。
2. ThinkPHP は、データ オブジェクトを迅速に作成するのに役立ちます。最も一般的なアプリケーションは、フォーム データに基づいてデータ オブジェクトを自動的に作成することです。 create メソッドによって作成されたデータ オブジェクトはメモリに保存され、実際にはデータベースに書き込まれません。
//实例化user模型 $user=M('user'); //根据表单提交的POST数据创建数据对象,并保存在内存中,可以通过dump($user)查看 $user=create(); //把创建的数据对象写入数据库中 $user->add();
3. create メソッドは、他のデータ オブジェクトや配列など、他の方法からのデータ オブジェクトの作成をサポートします。
$data['name']='ThinkPHP'; $data['eamil']='ThinkPHP@gmail.com'; $user->create($data); 甚至还可以支持从对象创建新的数据对象,如从user数据对象创建新的member数据对象 $user=M('user'); $user->find(1); $member=M('member'); $member->create($user);
4. データ オブジェクトの作成中に、create メソッドはトークン検証、自動データ検証、フィールド タイプ検索、自動データ補完などのいくつかの意味のある作業も完了します。
このため、私たちがよく知っているトークン検証、自動検証、および自動完了機能を有効にするには、実際に create メソッドを使用する必要があります。
5. トークン検証:
機能: フォームのリモート送信やその他のセキュリティ保護を効果的に防止できます。
次の設定を config.php に追加します:
'TOKEN_ON' => true, //是否开启令牌验证 'TOKEN_NAME' => 'token',// 令牌验证的表单隐藏字段名称 'TOKEN_TYPE' => 'md5',//令牌验证哈希规则
自動トークンは、md5 暗号化文字列を現在の SESSION セッションに追加します。そして、この文字列をフォームの前の隠しフィールドのフォームに挿入します。この文字列は 2 つの場所に表示されます。1 つは SESSION 内、もう 1 つはフォーム内です。フォームを送信すると、サーバーは最初に SESSION 情報を比較し、それが正しければフォームの送信が許可され、そうでない場合は送信が許可されません。
create.htmlのソースコードを見ると、フォームの終了マークの前に自動生成される隠しフィールドがあることがわかります
<input type="hidden" name="token" value="eef419c3d14c9c93caa7627eedaba4a5" />
(1)隠しフィールドの位置を自分で制御したい場合は、フォーム ページに手動で追加できます。 {__TOKEN__} マークを追加すると、テンプレートの出力時にシステムが自動的に置き換えます。
(2) フォームのトークン検証がオンになっているときに個々のフォームでトークン検証機能を使用する必要がない場合は、フォーム ページに {__NOTOKEN__} を追加すると、システムは現在のフォームのトークン検証を無視します。
if (!$User->autoCheckToken($_POST)){ // 令牌验证错误 }
関連する推奨事項:
以上がThinkPHP でのメソッドと自動トークン検証の例を作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。