驗證碼圖片出來了 數(shù)字不出來怎么回事啊
<?php
// 通過GD庫做驗證碼
require_once 'string.func.php';
function verifyImage($type=1,$length=4,$pixel=0,$line=0,$sess_name = "verify")//sess_name:驗證碼的名字
{
? ? session_start();
? ? // 創(chuàng)建畫布
? ? $width = 200;
? ? $height = 100;
? ? $image = imagecreatetruecolor($width, $height);
? ? $white = imagecolorallocate($image, 255, 255, 255);
? ? $black = imagecolorallocate($image, 0, 0, 0);
? ? // 畫一個矩形并填充
? ? imagefilledrectangle($image, 1, 1, $width - 2, $height - 2, $white);
? ? $chars = buildRandomString($type, $length);
? ? $_SESSION[$sess_name] = $chars;
? ? $fontfiles = array(
? ? ? ? "FZTJLSJW.TTF",
? ? ? ? "MSYH.TTF",
? ? ? ? "MSYHBD.TTF",
? ? ? ? "SIMFANG.TTF",
? ? ? ? "SIMSUN.TTC"
? ? ? ??
? ? );
? ? for ($i = 0; $i < $length; $i ++) {
? ? ? ? $size = mt_rand(14, 18);
? ? ? ? $angle = mt_rand(- 15, 15);
? ? ? ? $x = 5 + $i * $size;
? ? ? ? $y = mt_rand(20, 26);
? ? ? ? $color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );
? ? ? ? $fontfile = "../fonts/" . $fontfiles[mt_rand(0, count($fontfiles) - 1)];
? ? ? ? $text = substr($chars, $i, 1);
? ? ? ? imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text);
? ? }
?
? ? if ($pixel) {
? ? ? ? for ($i = 0; $i < 50; $i ++) {
? ? ? ? ? ? imagesetpixel($image, mt_rand(0, $width - 1), mt_rand(0, $height - 1), $black);
? ? ? ? }
? ? }
?
? ? if ($line) {
? ? ? ? for ($i = 1; $i < $line; $i ++) {
? ? ? ? ? ? $color = imagecolorallocate($image, mt_rand(50, 90), mt_rand(80, 200), mt_rand(90, 180));
? ? ? ? ? ? imageline ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $color );
? ? ? ? }
? ? }
? ? ob_clean();
? ? header ( "content-type:image/gif" );
? ? imagegif($image);
? ? imagedestroy($image);
}
verifyImage(1,4,5,10,5);
<?php
/**
?* 生成驗證碼
?* @param number $type
?* @param number $length
?* @return string
?*/
function buildRandomString($type=1,$length=4)
{
? ??
? ? if ($type == 1) {
? ? ? ? ? ? ?$chars = join("", range(0, 9));
? ? } elseif ($type == 2) {
? ? ? ? ? ? ?$chars = join("", array_merge(range("a", "z"), range("A", "Z")));
? ? } elseif ($type == 3) {
? ? ? ? $chars = join("", array_merge(range("a", "z"), range("A", "Z"), range(0, 9)));
? ? }
? ? if ($length > strlen($chars)) {
? ? ? ? exit("字符串長度不夠");
? ? }
? ? $chars = str_shuffle($chars);
? ? return substr($chars, 0, $length);
}
2020-04-17
imagettftext()中的$fontfile必須要用絕對路徑,從盤符開始全部補齊就可以了
$fontfile?=?"D:/phpstudy_pro/WWW/myphp/admin/fonts/".$fontfiles[mt_rand(0,count($fontfiles)-1)];