0

フォームでSimple PHP Captchaを使用しています。Firefox、Opera、IE では正常に動作しますが、Chrome では動作しません。画像は正常に読み込まれ、キャプチャ コードを渡すことができますが、次のように確認しようとすると失敗します。

if( $_POST['CaptchaCode'] === $_SESSION['captcha']['code'] )

echo $_POST['CaptchaCode']入力した正しいコードを取得するとecho $_SESSION['captcha']['code']、キャプチャで見たものとは異なるコードを取得します。新しく生成されたようです。

前もって感謝します。

4

3 に答える 3

1

私も同じ問題を抱えていました。「Simple PHP Captcha」が Chrome でのみ機能していませんでした。

私のケースはおそらく非常に具体的ですが、役立つ場合があります。まず、次のことを知っておく必要があります。

  • アプリが 404 エラー ページを返します。このページには、CAPTCHA 付きの連絡フォームが含まれています。
  • favicon.icoセクションで favicon を宣言していない場合でも、Google Chrome は を探します<head>。その場合、Chrome はルート ( /favicon.ico) を調べます。

残りはかなり明白です:)私のサーバーにはfaviconがなかったので、「お問い合わせ」ページにCAPTCHA画像がロードされましたが、さらにGoogleがfavicon.icoのリクエストを送信し、サーバーは404エラーページを返しました。これには連絡先も含まれていますのコードを書き換えた CAPTCHA 付きのフォーム$_SESSION

だから私は favicon.ico を追加するだけでこの問題を解決しました:)

この回答をより一般的にするために、CAPTCHAコードが何らかの理由で再生成されるという問題は確かです。

于 2013-08-06T08:24:34.440 に答える
0

完璧ではない解決策を見つけましたが、うまくいきます。次のような正しいコードをハッシュしたフォームに非表示の入力を追加しました。

<input type="hidden" name="hashCode" value=<?php echo "'" . md5($_SESSION['captcha']['code']) . "'" ?>> 

次に、チェックを実行します。

if( md5(strtoupper($_POST['captchaCode'])) === $_POST['hashCode'] )

Chrome でも動作するようになりました。しかし、フォームが Chrome で送信された後に$_SESSION['captcha']['code']変更される理由を知りたいです。

于 2013-06-02T16:04:36.757 に答える