我正在更改我的网站代码。我使用路由系统,然后通过htaccess文件将所有请求重定向到index.php文件。现在我的验证码图像不工作了。
验证码生成器:
<?php
session_start();
//Send a generated image to the browser
create_image();
exit();
header("Content-type: image/png");
function create_image(){
$x = 98;
$y = 45;
$im = imagecreate($x,$y);
$bgcolor=imagecolorallocate($im,13,17,25);
$text_color = imagecolorallocate($im,255, 255, 210);
function rand_string( $length ) {
$chars = "abcdklmnopqrstuvwxyzABCDEF0123456789GHIJKefghijLMNPQRSTUVWXYZ0123456789";
$str ="";
$size = strlen( $chars );
for( $i = 0; $i < $length; $i++ ) {
$str .= $chars[ rand( 0, $size - 1 ) ];
}
return $str;
}
$text=rand_string(rand(1,2));
$_SESSION['security_code']=strtolower($text);
imagettftext($im, 24, 3, 2, 32, $text_color, "fonts/grade.ttf", $text);
$color = imagecolorallocate($im, 255,222, 255);
for($i =2; $i < 55; $i+=mt_rand(2,6)) {
for($j =4; $j < 45; $j+=mt_rand(1,5)) {
imagesetpixel($im, $i,$j, $color);
}
}
imagejpeg($im);
imagedestroy($im);
}
?>显示验证码图片的html代码:
<img id="imgCaptcha" src="Captcha.php" style="float: right;" />htaccess重写以重定向:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]如何更改代码以显示重定向后的验证码图片?
发布于 2020-09-22 06:25:50
我找到了问题所在:
imagettftext($im, 24, 3, 2, 32, $text_color, "fonts/grade.ttf", $text);找不到字体文件。我将相对路径替换为绝对路径:
$font= __DIR__.'/fonts/grade.ttf';
imagettftext($im, 24, 3, 2, 32, $text_color, $font, $text);https://stackoverflow.com/questions/63998122
复制相似问题