-3

現在のところ、文字列を画像に変換するのではなく、学習目的でPHPで簡単なキャプチャを作成しようとしていますが、何が間違っているのかわかりませんか?コードを確認することすらできません。文字列が毎回一致しなかったためです。

これがコードです

    <?php


    $var = 'abcdefghijklmnopqrstuywxyz1234567890';

    $random = str_shuffle($var);

    $captcha = substr($random,0,10);
    echo $captcha;


    if(isset($_POST['captcha'])){

    $check = $_POST['captcha'];
    if ($captcha==$check){
    echo 'Verified.';

    }else{echo 'string didn\'t match';}

    }

    ?>
    <form action="random.php" method="POST">
    <input type="text" name="captcha"><br>
    <input type="submit" value="Submit">
    </form>
4

2 に答える 2

4

これをキャプチャに使用することはお勧めしません。

しかし、私はあなたのためだけにあなたのコードを修正していますlearning purpose

<?php

session_start();

if(isset($_POST['captcha'])){

$check = $_POST['captcha'];
if ($_SESSION['captcha']==$check){
echo 'Verified.';

}else{echo 'string didn\'t match';}

}

$var = 'abcdefghijklmnopqrstuywxyz1234567890';

$random = str_shuffle($var);

$captcha = substr($random,0,10);
echo $captcha;
$_SESSION['captcha'] = $captcha;

?>
<form action="random.php" method="POST">
<input type="text" name="captcha"><br>
<input type="submit" value="Submit">
</form>
于 2012-08-07T09:03:52.567 に答える
2

簡単なキャプチャフォームを作成するには、次の小さなガイドをご覧ください。

===== 1ステップ======FTPフォルダー(必要な場所)にフォントファイル(例:yourfont.ttf)を配置します。次に、ファイル(captcha.phpと呼ばれる)を作成し、その中に以下のコードを貼り付けます(次に、そのcaptcha.phpを同じftpフォルダーに配置します)。

<?php session_start();

// generate random number and store in session
$randomnr = rand(1000, 9999);
$_SESSION['randomnr2'] = md5($randomnr);
//generate image
$im = imagecreatetruecolor(100, 38);
//colors:
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 200, 35, $black);

// -------------      your fontname    -------------
//  example font http://www.webpagepublicity.com/free-fonts/a/Anklepants.ttf
$font = 'yourfont.ttf';

//draw text:
imagettftext($im, 35, 0, 22, 24, $grey, $font, $randomnr);

imagettftext($im, 35, 0, 15, 26, $white, $font, $randomnr);

// prevent client side  caching
header("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revаlidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

//send image to browser
header ("Content-type: image/gif");
imagegif($im);
imagedestroy($im);
?>

=====2ステップ======

次に、任意のページ(キャプチャを実装する場所)で、このコードをそのページ内のどこかに配置します(ただし、もちろん、このコードの最後の部分には、コードが正しく入力された場合にサンプルアクションを実行するサンプルPHP関数があります。したがって、キャプチャが正しい場合に目的の関数を実行するためのPHPプログラミングをもっと知っておく必要があります):

<form method="post" action=""> <img src="captcha.php" />
<input class="input" type="text" name="codee" />
<input type="submit" value="Submit" />
</form>

<?php
session_start();
if (md5($_POST['codee']) == $_SESSION['randomnr2']) { 
// here you  place code to be executed if the captcha test passes
  echo "YES. Do Something function1";
} 

else {  
 // here you  place code to be executed if the captcha test fails
  echo "No.  Do Something function2";
}
?>
于 2013-03-26T09:35:26.247 に答える