您好,登錄后才能下訂單哦!
PHP中怎么實現中文漢字驗證碼,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
1.算式驗證碼:
session_start();
header("Content-type:image/png");
$num1=mt_rand(0,9);//第一位數
$num2=mt_rand(1,9);//第二位數
$type_str="+-*";//方法字符串集合
$type=substr($type_str,rand(0,2),1);//隨機方法
$change=mt_rand(1,3);
if($change==1){
$code="$num1$type$num2=";
$result="\$verifyCode=$num1$type$num2;";
eval($result);
$_SESSION['authnum_session']=$verifyCode;
}elseif($change==2){
$result="\$verifyCode=$num1$type$num2;";
eval($result);
$code=$num1.$type."_=".$verifyCode;
$_SESSION['authnum_session']=$num2;
}elseif($change==3){
$result="\$verifyCode=$num1$type$num2;";
eval($result);
$code="_".$type.$num2."=".$verifyCode;
$_SESSION['authnum_session']=$num1;
}
$im=imagecreate(68,28);
$black=imagecolorallocate($im,0,0,0);
$white=imagecolorallocate($im,255,255,255);
$gray=imagecolorallocate($im,200,200,200);
$red=imagecolorallocate($im,255,0,0);
imagefill($im,0,0,$white);
imagestring($im,5,10,8,$code,$black);
for($i=0;$i<70;$i++){>
PHP中文漢字驗證碼怎么實現
session_start();
$ch_str="的一是在了不和有大這主中人上為們地個用工時要動國產以我到他會作來分生對于學下級就年階義發成部民
$len=mb_strlen($ch_str,"utf-8");//漢字長度
$str=array();
for($i=0;$i<4;$i++){ $pos=mt_rand(0,$len-5);//開始位置 $str[]=mb_substr($ch_str,$pos,1,"utf-8"); } $authnum_session=implode("",$str); $_SESSION['authnum_session']=$authnum_session;//記錄到session Header("Content-type:image/PNG"); //圖片的長和高 $image_x=100; $image_y=50; $im=imagecreate($image_x,$image_y); //這里取圖片底色為白色 $bkg=ImageColorAllocate($im,255,255,255); //顯示的字體樣式,這個要把文件放到對應的目錄中,假如你沒有文件就去window的字體文件中找一個吧。 $fnt="simhei.ttf"; //為圖像分配一些顏色 $white=ImageColorAllocate($im,234,185,95); //在圖片上畫橢圓弧,指定下坐標點 imagearc($im,150,8,20,20,75,170,$white); imagearc($im,180,7,50,30,75,175,$white); //在圖片上畫一條線段,指定下坐標點 imageline($im,20,20,180,30,$white); imageline($im,20,18,170,50,$white); imageline($im,25,50,80,50,$white); //亂點的數量 $noise_num=3000; $line_num=50; //各種混亂字符的顏色 $rectangle_color=imagecolorallocate($im,0xAA,0xAA,0xAA); $noise_color=imagecolorallocate($im,0x00,0x00,0x00); $font_color=imagecolorallocate($im,0x00,0x00,0x00); for($i=0;$i<$noise_num;$i++) { //在一個坐標點上畫一個單一像素,這個點上面定義了,是黑色的。 //imagesetpixel($im,mt_rand(0,$image_x),mt_rand(0,$image_y),$noise_color); } for($i=0;$i<$line_num;$i++) { $line_color=imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); //在兩個坐標點間畫一條線,顏色在上面定義 imageline($im,mt_rand(0,$image_x),mt_rand(0,$image_y),mt_rand(0,$image_x),mt_rand(0,$image_y),$line_color); } for($i=0;$i<4;$i++)>
注意:
中文漢字驗證碼單獨執行,然后獲取session會發現驗證碼和session內容不一致。但是在img標簽中src屬性中引用這個中文漢字驗證碼文件時,然后獲取session,這時兩者內容時一致的。
關于PHP中怎么實現中文漢字驗證碼問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。