不少網站為了防止用戶利用機器人自動注冊
PHP實現
我們這裡展示了如何編寫PHP程序實現驗證碼功能
代碼一
<?php
/*
* Filename: authpage
* Author: hutuworm
* Date:
* @Copyleft hutuworm
*/
srand((double)microtime()*
//驗證用戶輸入是否和驗證碼一致
if(isset($HTTP_POST_VARS[
{
if(strcmp($HTTP_POST_VARS[
echo "驗證成功!";
else
echo "驗證失敗!";
}
//生成新的四位整數驗證碼
while(($authnum=rand()%
?>
<form action=authpage
<table>
請輸入驗證碼
<input type=submit name="驗證" value="提交驗證碼">
<input type=hidden name=authnum value=<? echo $authnum; ?>>
<img src=authimg
</table>
</form>
代碼二
<?php
/*
* Filename: authimg
* Author: hutuworm
* Date:
* @Copyleft hutuworm
*/
//生成驗證碼圖片
Header("Content
srand((double)microtime()*
$im = imagecreate(
$black = ImageColorAllocate($im
$white = ImageColorAllocate($im
$gray = ImageColorAllocate($im
imagefill($im
//將四位整數驗證碼繪入圖片
imagestring($im
for($i=
{
imagesetpixel($im
}
ImagePNG($im);
ImageDestroy($im);
?>
本文程序在Apache
上文只是對驗證碼功能的一個簡單實現
authpage
本站注
修改後的代碼如下
<?php
/*
* Filename: authimg
* Author: hutuworm
* Date:
* @Copyleft hutuworm
*/
//生成驗證碼圖片
Header("Content
srand((double)microtime()*
$im = imagecreate(
$black = ImageColorAllocate($im
$white = ImageColorAllocate($im
$gray = ImageColorAllocate($im
imagefill($im
while(($authnum=rand()%
//將四位整數驗證碼繪入圖片
imagestring($im
for($i=
{
$randcolor =
ImageColorallocate($im
imagesetpixel($im
}
ImagePNG($im);
ImageDestroy($im);
?>
顯示結果如下圖
[在新窗口中浏覽該圖片]
有興趣的朋友可以自己試一下
看一下上面這段代碼
第一次看PHP代碼
代碼一
<?php
/*
* Filename: authpage
* Author: hutuworm
* Date:
* @Copyleft hutuworm
*/
//以系統時間為種子得到隨機數
//srand
//microtime
srand((double)microtime()*
//驗證用戶輸入是否和驗證碼一致
if(isset($HTTP_POST_VARS[
{
//authnum的值是不應該發送到客戶端的
//authnum 保存在 session 裡應該是個可行的辦法
if(strcmp($HTTP_POST_VARS[
echo "驗證成功!";
else
echo "驗證失敗!";
}
//生成新的四位整數驗證碼
while(($authnum=rand()%
?>
<form action=authpage
<table>
請輸入驗證碼
<input type=submit name="驗證" value="提交驗證碼">
<input type=hidden name=authnum value=<? echo $authnum; ?>>
<img src=authimg
</table>
</form>
代碼二
<?php
/*
* Filename: authimg
* Author: hutuworm
* Date:
* @Copyleft hutuworm
*/
//下面幾行代碼肯定會讓寫ASP的GGDD們羨慕不已
//生成驗證碼圖片
//指定頭信息
Header("Content
srand((double)microtime()*
//返回一個圖像標識符
$im = imagecreate(
$black = ImageColorAllocate($im
$white = ImageColorAllocate($im
$gray = ImageColorAllocate($im
imagefill($im
//強悍!!
//將四位整數驗證碼繪入圖片
//方便起見
imagestring($im
for($i=
{
imagesetpixel($im
}
ImagePNG($im);
//imagepng
ImageDestroy($im);
?>
本文程序在Apache
上文只是對驗證碼功能的一個簡單實現
本站注
修改後的代碼如下
<?php
/*
* Filename: authimg
* Author: hutuworm
* Date:
* @Copyleft hutuworm
*/
//生成驗證碼圖片
Header("Content
srand((double)microtime()*
$im = imagecreate(
$black = ImageColorAllocate($im
$white = ImageColorAllocate($im
$gray = ImageColorAllocate($im
imagefill($im
while(($authnum=rand()%
//將四位整數驗證碼繪入圖片
imagestring($im
for($i=
{
$randcolor =
ImageColorallocate($im
imagesetpixel($im
}
ImagePNG($im);
ImageDestroy($im);
?>
驗證碼技術核心內容是動態生成圖片
[轉]用XBM創建動態客戶端圖像
作者
Wednesday
X
XBM基礎
XBM格式本來是為存儲單色的系統位圖而設計的
這裡你也許會問
Mosaic項目後來成為了Netscape浏覽器的開發基礎
從一個程序員的角度來看
XBM創建起來很有程序性
X
通過使用IMG標識可以很容易地將XBM文件嵌入到一個Web頁面中
<img src=”xbmsmill
注意
這種格式不對Mac或相應的浏覽器有效
典型的XBM源代碼與列表A中顯示的比較相像
#define語句以像素點為單位設置了圖像的寬度和高度
我所創建的二進制圖像寬
計算出笑臉的十六進制值得最簡單的方法是一次檢驗圖像的一行
下面兩行分別表示四位的分段和其在表A中對應的十六進制數
二進制
十六進制
表A
XBM二/十六進制轉換表
二進制 十六進制
請注意這些並不是標准的二/十六進制轉換
最後要把這些十六進制值轉換成XBM的右格式
因此
這些符合XBM的值可以很容易地插入到圖像數組中
static unsigned char xbmsmile_bits[]=
現在我們來看看格式本身
圖片用點陣的形式表示
下面是我"畫"的
num
<%
Dim a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
a(
%>
顯示的方法是:
Response
#define counter_width
#define counter_height
static unsigned char counter_bits[] = {
};
這樣在浏覽器上就顯示出來一個
要顯示兩個或以上的數字的時候
比如顯示
a(
下面是具體計數器的例子:
count
<!
<%
Dim Image
Dim Width
Dim num
Dim digtal
Dim Length
Dim sort
Length =
Redim sort( Length )
num =
digital = ""
For I =
digital = digital & "
Next
For I =
digital = digital & Mid( num
Next
For I =
sort(I) = Mid( digital
Next
Width =
Height =
Response
hc=chr(
Image = "#define counter_width " & Width & hc
Image = Image & "#define counter_height " & Height & hc
Image = Image & "static unsigned char counter_bits[]={" & hc
For I =
For J =
Image = Image & a(sort(J)
Next
Next
Image = Left( Image
Image = Image & "};" & hc
Response
%>
把
#define counter_width
#define counter_height
static unsigned char counter_bits[] = {
};
保存為 xbm 文件就可以得到一張顯示為
#define counter_width
#define counter_height
static unsigned char counter_bits[]={
保存為 xbm文件則顯示為
From:http://tw.wingwit.com/Article/program/PHP/201311/21348.html