之前的方法似乎沒什麼效果~後來去翻了跟人家借的書~可以查到關於驗證碼的基礎範例~
我就把它拿來改了改~
製作PHP的驗證碼
首先一定要去檢查%WINDOWS%裡面的php.ini
要啟用這個
extension=php_gd2.dll(就是要把原來前面的分號去掉重新啟動APACHE啦)
為什麼要這個呢?因為它能夠讓你畫圖片~怎麼說呢?
往下看就知道!
準備三個檔:分別叫做 scue.php secure.php security.php(不用我說吧會改的自己改囉
)
好了貼吧你!放到自己網頁中最好的位置
(都拿掉排版了~閱讀上可能要自己努力了
)
以下是scue.php(驗證完成後的結果網頁)
複製程式
if(isset($HTTP_POST_VARS['authinput']))
{
if(strcmp($HTTP_POST_VARS['authnum'],$HTTP_POST_VARS['authinput'])==0)
{
echo("<td class=\"row1\" width=\"100%\">
認證成功!
</td>
</tr>
</table>");
}
else
{
echo("認證碼輸入錯誤!認證失敗!");
}
以下是secure.php(這個看不懂的請不要亂改,這是產生圖片驗證碼形式的程式)
複製程式
<?php
Header("Content-type: image/PNG");
srand((double)microtime()*1000000);
$img_height=68;
$img_width=32;
$im = imageCreate($img_height,$img_width);
$rndcolor = ImageColorAllocate($im,rand(20,255),rand(20,255),rand(20,255)); //rand(20,255)改20更大一點上視覺上更能清楚看到顏色中的數字
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 200,200,200);
imagefill($im,68,30,$rndcolor);
imagestring($im, 5, 10, 8, $HTTP_GET_VARS['authnum'], $black);
for($i=0;$i<200;$i++)
{
$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);
}
ImagePNG($im);
ImageDestroy($im);
?>
以下是security.php(驗證碼輸入的畫面)
複製程式
echo ("<form action=scue.php method=post>
驗證碼:<input type=text name=authinput size=\"14\" maxlength=\"4\">
<input type=\"submit\" id=\"submit\" value=\"驗證\">
<div align=\"center\">
<input type=hidden name=authnum value="); echo $authnum; echo(">
</div>
<img src=secure.php?authnum=");echo $authnum; echo(">
</form>");
有問題就來吧~
這是可以產生4位數的驗證碼的PHP程式~其中驗證碼是使用php_gd2.dll中的imageCreate產生.PNG形式的圖片而且還附有亂數干擾的顆粒(隨機顏色)及隨機變換的背景顏色~算是比較完善的了@@
不過我沒用SESSION(學的不精~還不是很會那部份~)~把這兩天做的程式逛想給大家~讓其他人也能查到這些資訊^^