2011-01-13 10 views
5

にハッシュを追加したときに動作を停止し、なぜこのZendの例では、私はこの例のチュートリアル以下だ形

プロジェクトコード:http://akrabat.com/wp-content/uploads/zf-tutorial-layoutform.zip

チュートリアル:http://akrabat.com/zend-framework/a-form-in-your-layout/

プロジェクトコード予想されるように動作します、フォームにハッシュ要素を追加するまで私がしているのは、このコードをapplication/forms/Signup.phpのフォームに追加することです。

$hash = new Zend_Form_Element_Hash('hash'); 
$hash->setSalt('mysalt'); 
$this->addElement($hash); 

この余分なコードは、すべてのものをオフにします。今すぐフォームを送信すると、2つのトークンが一致しないというエラーが表示されます。

いくつかのトラブルシューティング:それは私の他の例では正常に動作しますので、

  • 問題はハッシュ自体ではありません。
  • この例ではリクエストの処理方法と関係がありますが、問題が正確であるかどうかはわかりません。私はそれがホップ数と関係があると思ったが、Zend_Form_Element_Hashを編集してホップ数を1から100に変更したところ、同じエラーが出た。

これは、私がZendの専門知識レベルで考えることができるトラブルシューティングの程度です。だから、大きな頭脳に尋ねる時だと思った。私は誰かがそれを理解できることを望んでいる。

+0

ハッシュ要素が問題になるかもしれないzend_sessionを利用しているため。確認するもう1つの点は、ハッシュが1ホップ後(またはタイムアウト後)に期限切れになるまで、検証までホップである可能性があります。 – Fge

+0

いいえ、それはハードコードされています。しかし、セッションの内容とサブミットされたフォームデータを比較したいかもしれません。 ($ _SESSION vs $ _POST)、デバッグ用のリダイレクトを削除します。 – Fge

+0

直接ではありません。しかし、あなたのブラウザバーが何か他のものを表示してからフォームターゲットを表示すると、それ以上のものになります。しかし、リダイレクトしない場合は、$ _SESSION/$ _ POSTを確認する必要があります。 – Fge

答えて

2

ハッシュ要素をフォームに追加した後でも機能しますか?もしそうなら、プロジェクトをアップロードして、別の回答として投稿してください。

あなたが投稿したコードを追加するだけで、うまくいきました。このコードをどこで使用していますか?あなたの環境とは何かのように思えますか?

0

はから:Zend_Form_Element_Hash

この要素は、データがフォームを生成し、ユーザー・セッションではなく、不正なスクリプトによって提出されることを保証、フォーム上のCSRF攻撃からの保護を提供します。保護は、フォームにハッシュ要素を追加し、フォームがサブミットされたときに検証します。

ハッシュ要素の名前は一意である必要があります。私たちは、衝突しないのと同じ名前と異なる塩と、エレメント2つのハッシュ用の塩オプションを使用することをお勧めします

$form->addElement('hash', 'no_csrf_foo', array('salt' => 'unique'));

はsaltは、後からsetSalt($ salt)メソッドを使用して塩を設定することができます。

内部的には、要素はZend_Session_Namespaceを使用して一意の識別子を格納し、送信時にそれをチェックします(TTLが期限切れでないことを確認します)。次に、 '同一の'バリデータを使用して、送信されたハッシュが格納されたハッシュと一致することを確認します。

'formHidden'ビューヘルパーは、フォーム内の要素を表示するために使用されます。

私がしようとします:

$form->addElement('hash', 'unique_form_name', array('salt' => 'unique_salt'));

私はあなたのコード内でユニークなフォーム/ハッシュ名が表示されないと、トークンがマッハいない理由です。

+0

要素を作成するために使用されている文字列 'hash'は一意の名前ではありませんか? –

+0

名前は問題ではありません。それは名前 "ハッシュ"でうまく動作します。 – user570783

関連する問題