Captcha php..我不知道什么是错误


Captcha php ... I dont know what is error

我是php新手,我想做capthca。。。我写了代码、验证等,结果我只得到了一张小照片。。。上面什么都没有。。。我的程序不会告诉我哪里有错误

这是我在captcha.php:中的代码

<?php
session_start();`enter code here`

  // build the base captcha image 
$img = imagecreatetruecolor(80,30);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
$grey = imagecolorallocate($img,150,150,150);
$red = imagecolorallocate($img, 255, 0, 0);
$pink = imagecolorallocate($img, 200, 0, 150);
// build the base captcha image - END
// building randomString 
function randomString($length){
    $chars = "abcdefghijkmnopqrstuvwxyz023456789";
    srand((double)microtime()*1000000);
    $str = "";
    $i = 0;
        while($i <= $length){
            $num = rand() % 33;
            $tmp = substr($chars, $num, 1);
            $str = $str . $tmp;
            $i++;
        }
    return $str;
}
for($i=1;$i<=rand(1,5);$i++){
    $color = (rand(1,2) == 1) ? $pink : $red;
    imageline($img,rand(5,70),rand(5,20), rand(5,70)+5,rand(5,20)+5, $color);
}
// building randomString - END
// fill  image with a white rectangle
imagefill($img, 0, 0, $white);
$string = randomString(rand(7,10));
$_SESSION['string'] = $string;
imagettftext($img, 11, 0, 10, 20, $black, "calibri.ttf", $string);
// fill  image with a white rectangle - END
//  type of image
header("Content-type: image/png");
imagepng($img);

?>

这是我在contact.php:中的代码

<?php
session_start();
if(isset($_POST['submit'])) {
    if(!empty($_POST['ime']) && !empty($_POST['email']) && !empty($_POST['poruka']) && !empty($_POST['code'])) {
        if($_POST['code'] == $_SESSION['rand_code']) {
            // send email
            $accept = "Poruka uspesno poslata.";
        } else {
            $error = "Pogresan kod.";
              }
    } else {
        $error = "Molimo Vas popunite sva polja.";    
    }
 }
?> 
<!DOCTYPE html >
<html >
<head>
<title>Kontaktirajte nas</title>
</head>
<body>
<?php if(!empty($error)) echo '<div class="error">'.$error.'</div>'; ?>
<?php if(!empty($accept)) echo '<div class="accept">'.$accept.'</div>'; ?>
<form  method="post">
    <p>Ime<input type="text" name="ime" /></p>
    <p>Email<input type="text" name="email" /></p>
    <p>Poruka<textarea name="poruka" rows=”25” cols=”40”></textarea></p>
        <img src="captcha.php"/>
    <p>Posalji<input type="text" name="code" /></p>
    <p><input type="submit" name="submit" value="Posalji" class="button" /></p>
    <p>"IPO" MASARIKOVA br.5, BEOGRAD</p>
</form>
</body>
</html>

当您将页眉设置为header("Content-type: image/png");时,页面将不会呈现其他内容。

只需将你的captcha和表单分开,这样它就可以工作了。

例如,您的captcha.php将是:

<?php
session_start();
// build the base captcha image
$img = imagecreatetruecolor(80, 30);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
$grey = imagecolorallocate($img, 150, 150, 150);
$red = imagecolorallocate($img, 255, 0, 0);
$pink = imagecolorallocate($img, 200, 0, 150);
// build the base captcha image - END
// building randomString
function randomString($length)
{
    $chars = "abcdefghijkmnopqrstuvwxyz023456789";
    srand((double)microtime() * 1000000);
    $str = "";
    $i = 0;
    while ($i <= $length) {
        $num = rand() % 33;
        $tmp = substr($chars, $num, 1);
        $str = $str . $tmp;
        $i++;
    }
    return $str;
}
for ($i = 1; $i <= rand(1, 5); $i++) {
    $color = (rand(1, 2) == 1) ? $pink : $red;
    imageline($img, rand(5, 70), rand(5, 20), rand(5, 70) + 5, rand(5, 20) + 5, $color);
}
// building randomString - END
// fill  image with a white rectangle
imagefill($img, 0, 0, $white);
$string = randomString(rand(7, 10));
$_SESSION['string'] = $string;
imagettftext($img, 11, 0, 10, 20, $black, "Gotham-Bold.otf", $string);
// fill  image with a white rectangle - END
//  type of image
header("Content-type: image/png");
imagepng($img);

?>