程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php5 圖片驗證碼實現代碼

php5 圖片驗證碼實現代碼

編輯:PHP綜合
GD庫的函數
1,imagecreatetruecolor -----創建一個真彩色的圖像
imagecreatetruecolor(int x_size,int y_size) //x表示寬,y表示高
2,imagecolorallocate 為一幅圖像分配顏色(調色板)
imagecolorallocate(resource image,int red,int green,int blue)//red,green,blue----三原色
3,imagestring 繪圖函數
iamgestring(resource image,font,int x,int y,內容,顏色);
4,輸出函數
php的header是定義頭的動作,php5中支持3中類型:
1,Content-type:xxxx/yyyy
2,Location:xxxx:yyyy/zzzz
3,Status:nnn xxxxxx
xxxx/yyyy表示內容文件的類型
如:image/gif
image/jpeg
image/png
例子:header("Content-type:image/jpeg")
GD庫中有對應的image類型
imagejpeg(),imagegif(),imagepang()
5,imageline畫線函數
iamgeline(resource image,int x1,int y1,int x2,int y2,int color);
image ---圖片
x1 ---啟始坐標
y1
x2 ---終點坐標
y2
6,imagesetpixel畫點函數
imagesetpixel(resource image,int x,int y,int color)
7,imagettftext帶字體的寫入函數
imagettftext(resource image,float size,float angle,int x,int y,int color,string fontfile,string text)
8,php驗證碼插入中文的方法
iconv("gb2312","utf-8","字符串"); //首先要將文字轉換成utf-8格式
9,隨機函數
1,rand([int min,int max]) //rand(1,4) 生成1-4的數
2, dechex(十進制數) //轉換為十六進制
做驗證碼的步驟:
生成隨機數 -- 創建圖片 -- 隨機數寫成圖片 --保存在session中
輸入驗證碼例子
gdchek.php
復制代碼 代碼如下:
<?php
/*
* 生成圖片驗證碼
* and open the template in the editor.
*/
session_start();
for($i=0;$i<4;$i++){
$rand.=dechex(rand(1,15)); //生成4位數包含十六進制的隨機數
}
$_SESSION[check_gd]=$rand;
$img=imagecreatetruecolor(100,30); //創建圖片
$bg=imagecolorallocate($img,0,0,0); //第一次生成的是背景顏色
$fc=imagecolorallocate($img,255,255,255); //生成的字體顏色
//給圖片畫線
for($i=0;$i<3;$i++){
$te=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
imageline($img,rand(0,15),0,100,30,$te);
}
//給圖片畫點
for($i=0;$i<200;$i++){
$te=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($img,rand()%100,rand()%30,$te);
}
//首先要將文字轉換成utf-8格式
//$str=iconv("gb2312","utf-8","呵呵呵");
//加入中文的驗證
//smkai.ttf是一個字體文件,為了在別人的電腦中也能起到字體作用,把文件放到項目的根目錄,可以下載,還有本機C:\WINDOWS\Fonts中有
imagettftext($img,11,10,20,20,$fc,"simkai.ttf","你好你好");
//把字符串寫在圖片中
//imagestring($img,rand(1,6),rand(3,70),rand(3,16),$rand,$fc);
//輸出圖片
header("Content-type:image/jpeg");
imagejpeg($img);
?>

login.php
復制代碼 代碼如下:
<?php
/*
*
*
*/
session_start();
if($_POST[sub]){
//判斷驗證碼是否相同
if($_POST[gd_pic]==$_SESSION[check_gd]){
echo "驗證成功!";
}else{
echo "驗證碼錯誤";
}
}
?>
<form action="login.php" method="POST">
用戶名:<input type="text" name="user"/><br>
密碼:<input type="password" name="pwd"/><br>
驗證碼:<imput type="text" name="gd_pic"/><img src="gdchek.php"><br>
<imput type="submit" name="sub" value="submit"/>
</form>
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved