簡體   English   中英

在PHP中創建自定義驗證碼

[英]Creating custom captcha in PHP

我想在PHP中創建自定義的Captcha驗證,並且已經編寫了此代碼,但是它似乎無法正常工作。 未創建映像,我找不到錯誤在哪里。

PHP:

<?php
session_start();

$string = '';

for ($i = 0; $i < 5; $i++) {
    // this numbers refer to numbers of the ascii table (lower case)
    $string .= chr(rand(97, 122));
}

$_SESSION['rand_code'] = $string;

//specify the path where the font exists
$dir = 'fonts/arial.ttf';

$image = imagecreatetruecolor(170, 60);
$black = imagecolorallocate($image, 0, 0, 0);
$color = imagecolorallocate($image, 200, 100, 90); // red
$white = imagecolorallocate($image, 255, 255, 255);

imagefilledrectangle($image,0,0,399,99,$white);
imagettftext ($image, 30, 0, 10, 40, $color, $dir."arial.ttf", $_SESSION['random_code']);

header("Content-type: image/png");
imagepng($image);
?>

HTML:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<p><input type="text" name="name" /> Name</p>
<p><input type="text" name="email" /> Email</p>
<p><textarea name="message"></textarea></p>
<img src="captcha.php"/>
<p><input type="text" name="code" /> Are you human?</p>
<p><input type="submit" name="submit" value="Send" class="button" /></p>
</form>

更改此:

imagettftext ($image, 30, 0, 10, 40, $color, $dir."arial.ttf", $_SESSION['random_code']);

對此:

imagettftext ($image, 30, 0, 10, 40, $color, $dir, $_SESSION['random_code']);

您已經在此處設置字體文件名:

$dir = 'fonts/arial.ttf';

您因未定義的變量而生成警告。

改變這條線

imagettftext ($image, 30, 0, 10, 40, $color, $dir."arial.ttf", $_SESSION['random_code']);

到這個

imagettftext ($image, 30, 0, 10, 40, $color, $dir."arial.ttf", $_SESSION['rand_code']);

還要檢查字體文件是否確實可用並且可讀,否則還會收到警告

這是一個jQuery驗證驗證碼嗎?

1.-您是否安裝了GD庫?

2.-文件名為.php或.jpg嗎? 如果名為.jpg,您的服務器可以執行.jpg文件,例如.php文件嗎?

其他建議。 您是否正在嘗試HoneyPot驗證而不是驗證碼?

首先,將文本從會話var更改為一些硬編碼的字符串,例如

imagettftext ($image, 30, 0, 10, 40, $color, $dir , "sdfsfdsfd");

如果仍然無法正常工作,請刪除該行

header("Content-type: image/png");

並在瀏覽器中打開captcha.php的完整URL。 它肯定會顯示一些錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM