正しいコードを入力しても、Magentoのデフォルトのキャプチャに「不正なキャプチャ」と表示される


10

私のmagentoサイトで、最初から構築したカスタムテーマのCaptcha for Create Accountフォーム(「rwd」ではなく)を有効にしましたが、フィールドに正しいcaptchaコードを入力して顧客を登録しようとすると、「Incorrect同じページに更新してリダイレクトした後のキャプチャ」

クライアントでもサーバーでも警告/エラーはありません。

誰かが私を案内できますか?


1
同じ問題が発生しています。CAPTCHA画像の更新ボタンをクリックして新しい値を正しく入力すると、それが受け入れられます。同じ行動を経験しましたか?
ムース

回答:


2

キャプチャチェックプロセスをデバッグすることで解決できます。

したがって、以下のプロセスに従ってください。

Magento customer registration form'scaptchaは、イベントを使用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')

これを使用すると、問題の場所を追跡できます


iamも同じエラーになります。これを確認する方法@Amit Bera
User0434

1

問題は、誤った入力フィールド名を参照する可能性があります(たとえば、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回呼び出さないようにしてください。カスタマーセッションからキャプチャ値が消去されるためです。その場合、常に「不正なキャプチャ」というメッセージが表示されます。


さて、あなたはそれを言及しました、単一のページに2つのキャプチャがあります。ポップアップログインアイコンがあり、CAPTCHAが登録ページで生成されているのがわかります。CAPTCHAが有効になっている唯一の場所は、顧客登録ページです。
ムース

1

ソースを表示し、ページに別のキャプチャフォームがあるかどうかを確認します。

私も同じ問題を抱えていました。私にとっての問題は、AjaxPro拡張機能に、CAPTCHAも使用する非表示のログインフォームがあったことです。両方のフォームの「captcha」という同じブロック名があったため、私のブロックが2回使用され、ページの読み込み時に2番目の(非表示の)フォームのコードが更新され、フォームのフォームが無効になりました。そのため、カスタムフォームのブロックの名前を、たとえば "captcha"から "captcha.custom"に変更する必要がありました。その後、それはうまくいきました。


これが私の問題の原因であることを確認できます。私もAjaxPro拡張機能を持っていて、ヘッダーにログインポップオーバーボックスを追加しました。カーソルを合わせると、2つ目のCAPTCHAが表示されました。app / design / frontend / base / default / template / tm / ajaxpro / customer / login.phtmlに移動してコメントアウトすることで修正しました:<?php echo $ this-> getChildHtml( 'form.additional.info') ; ?>。
NotJay 2018

0

この理由の1つは、すでに述べたもの以外に、同じリクエストURLでJSリクエストからロードしようとするリソースが誤って参照されている可能性があります。これにより、いくつかのMagentoページでは、フロントエンドを更新せずにセッションでキャプチャを再生成します。出力はそのajaxリクエストに送信されるため、キャプチャ画像を表示します。

たとえば、相対パスを参照する画像を読み込もうとするJSライトボックスを使用していたため、次のリクエストパスで/ customer / account / forgotpasswordへの追加リクエストが発生していました。/customer/account/forgotpassword/images/black.png 、これにより、キャプチャコードがセッションで変更されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.