4

こんにちは、私は PHP を初めて使用します。助けてください。お問い合わせフォームを作成しましたが、キャプチャを追加したいと思います。いくつかのノイズが追加された数字を持つ gif 画像をいくつか作成し、no1 の場合は code_01.gif、no2 の場合は code_02.gif などと名前を付けました。 :

<img src="images/code_01.gif" />
<img src="images/code_07.gif" />
<img src="images/code_01.gif" />
<img src="images/code_08.gif" />
<img src="images/code_03.gif" />
<img src="images/code_07.gif" />
<input name="captcha" type="text" id="captcha" />

画像コードを毎回ランダムに表示し、入力が表示された6桁と一致するかどうかを確認する機能を追加したいと思います。

どんな助けでも大歓迎です。

4

3 に答える 3

5

シンプルな PHP キャプチャ

これは、これまで使用した中で最も簡単な CAPTCHA スクリプトの 1 つです。テキストが不明瞭になることはありませんが、低レベルの CAPTCHA ソリューションを必要とする多くの人にとって、その目的を十分に果たします。このスクリプトでは、セットアップはほとんどまたはまったく必要ありません。唯一の依存関係は、PHP GD ライブラリです。

このように簡単に使用できますが、構成も可能です。

<?php

session_start();
include("captcha.php");
$_SESSION['captcha'] = captcha();

echo '<img src="' . $_SESSION['captcha']['image_src'] . '" alt="CAPTCHA" />';

?>

デモ: http://labs.abeautifulsite.net/simple-php-captcha/

于 2012-07-12T08:51:31.743 に答える
3

これも使用できます

Securimage は、複雑な画像と CAPTCHA コードを生成してフォームをスパムや悪用から保護するための、オープンソースの無料の PHP CAPTCHA スクリプトです。Web サイトの既存のフォームに簡単に追加して、スパム ボットから保護することができます。PHP がインストールされていて、PHP 内で GD がサポートされている限り、ほとんどの Web サーバーで実行できます。Securimage は、CAPTCHA 画像の生成から型指定されたコードの検証まで、すべてを行います。可聴コードは、視覚障害者向けに Flash を使用してブラウザにストリーミングできます。

于 2012-07-13T02:39:09.510 に答える
-1

これは私がずっと前に見つけた簡単な数学のキャプチャタイプのものです。
利点:
-画像がないため、帯域幅の使用量が少なくなります。
-外部依存関係はありません。

フロープロセス

form.php

  1. 乱数を1つ選択します$n1
  2. 別の乱数を選択してください$n2
  3. さまざまな数学演算を使用して計算し$n1、それをとして保存して、結果の数値が予測不可能であり、$n2$result$n1+$n2
  4. エコー「$n1+とは$n2?」
  5. 手順4で尋ねた質問の答えを入力するようにユーザーに依頼します。
  6. $resultフォームに非表示の値として追加します。
  7. 送信時に、$_POST値はによって処理されcheck.phpます。

check.php

  1. $_POST["answer"]が設定されている場合は、$answer
  2. のステップ3で計算$answerしたのと同じ方法で計算します。form.php
  3. ここで、$answerがに等しい場合$_POST["result"]、ユーザーが人間であることが確認されます。

これ$answerはユーザーから送信された回答であり$result、で数学演算を実行した後の結果であることに注意して$answerください。

コード:

ファイル:form.php

<?php

$n1 = rand(1,15);
$n2 = rand(1,15);
//start making our result unpredictable & non-aligned with hidden value
$result = $n1+$n2;
$result = ($result*3)-2;
$result = ($result+4)*5;
$question="what is $n1 + $n2?";
?>
<form method="post" action="check.php">
<?php echo $question.PHP_EOL; ?>
<input name="answer" type="text"><br />
<input type="hidden" name="result" value="<?php echo $result; ?>">
</form>

ファイル:check.php

<?php

if(isset($_POST["answer")){
    $answer = $_POST["answer"];
    // start doing same math on $answer
    $answer = ($answer*3)-2;
    $answer = ($answer+4)*5;
    if($answer == $_POST["result"]{
        // echo Hurray, you are Human..
        // Do anything here.. 
    }else{
        echo "Wrong Answer";
    }

http://codepad.org/2MtULNhZでのロジックの実装

重要なのは、エンコードとデコードの式を難しくすることです。誰かがそれらの両方の間の関係を見て、見つけてはいけないようにhidden form value resultQuestion

于 2012-07-17T11:50:19.310 に答える