私のmagentoサイトで、最初から構築したカスタムテーマのCaptcha for Create Accountフォーム(「rwd」ではなく)を有効にしましたが、フィールドに正しいcaptchaコードを入力して顧客を登録しようとすると、「Incorrect同じページに更新してリダイレクトした後のキャプチャ」
クライアントでもサーバーでも警告/エラーはありません。
誰かが私を案内できますか?
私のmagentoサイトで、最初から構築したカスタムテーマのCaptcha for Create Accountフォーム(「rwd」ではなく)を有効にしましたが、フィールドに正しいcaptchaコードを入力して顧客を登録しようとすると、「Incorrect同じページに更新してリダイレクトした後のキャプチャ」
クライアントでもサーバーでも警告/エラーはありません。
誰かが私を案内できますか?
回答:
キャプチャチェックプロセスをデバッグすることで解決できます。
したがって、以下のプロセスに従ってください。
Magento customer registration form's
captchaは、イベントを使用Mage_Captcha_Model_Observer
して関数のクラスで チェックされています。checkUserCreate()
controller_action_predispatch_customer_account_createpost
magentoは、使用時にcaptcha値をチェックします。
$captchaModel->isCorrect($this->_getCaptchaString(Mage::app()->getRequest(), $formId))
つまり、ここでmagentoはフィールドの値を送信しcaptcha[user_create]
、フィールドはMage_Captcha_Model_Zend
関数で一致しますisCorrent()
このフィールドはセッション値と一致します。
Mage::getSingleton('customer/session')->getData($this->_getFormIdKey('word')
値
これを使用すると、問題の場所を追跡できます
問題は、誤った入力フィールド名を参照する可能性があります(たとえば、name="captcha_user_create"
ではなくname="captcha[user_create]"
)。または、JS captcha init new Captcha(...)
が2回起動されます。
template/captcha/zend.phtml
カスタムテーマにファイルはありますか?
他のページ(パスワードを忘れた、ログイン)でキャプチャを使用しますか?別のページで正しく動作しますか?
1つのページで2つのキャプチャを使用しますか?
またMage_Captcha_Model_Zend::isCorrect
、メソッドを2回呼び出さないようにしてください。カスタマーセッションからキャプチャ値が消去されるためです。その場合、常に「不正なキャプチャ」というメッセージが表示されます。
ソースを表示し、ページに別のキャプチャフォームがあるかどうかを確認します。
私も同じ問題を抱えていました。私にとっての問題は、AjaxPro拡張機能に、CAPTCHAも使用する非表示のログインフォームがあったことです。両方のフォームの「captcha」という同じブロック名があったため、私のブロックが2回使用され、ページの読み込み時に2番目の(非表示の)フォームのコードが更新され、フォームのフォームが無効になりました。そのため、カスタムフォームのブロックの名前を、たとえば "captcha"から "captcha.custom"に変更する必要がありました。その後、それはうまくいきました。
この理由の1つは、すでに述べたもの以外に、同じリクエストURLでJSリクエストからロードしようとするリソースが誤って参照されている可能性があります。これにより、いくつかのMagentoページでは、フロントエンドを更新せずにセッションでキャプチャを再生成します。出力はそのajaxリクエストに送信されるため、キャプチャ画像を表示します。
たとえば、相対パスを参照する画像を読み込もうとするJSライトボックスを使用していたため、次のリクエストパスで/ customer / account / forgotpasswordへの追加リクエストが発生していました。/customer/account/forgotpassword/images/black.png 、これにより、キャプチャコードがセッションで変更されます。