问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php验证码乱码

发布网友 发布时间:2022-04-21 15:26

我来回答

8个回答

热心网友 时间:2022-04-07 14:55

呵呵,这个程序没有问题

imagettftext($im,20,0,3,25,$font,"comic.ttf",$str);

这里需要一个comic.ttf字体文件,必须放在那个php程序同目录下

你是不是没有这个字体文件

如果没有,可以到系统的C:\Windows\Fonts目录下拷贝一个(拷个几百KB大小的就足够用了)

我试了你的程序,生成的图片效果不是很好,我以前写了一个,给你参考下把,虽然也是修改的网上的:

<?
//获取验证码图片模块
session_start();
//记得去掉下面注释
if (!isset($_GET["sid"])||$_GET["sid"]==""||$_GET["sid"]!=session_id())die();

Header("Content-type:image/png");
//定义header,声明图片文件,最好是png,无版权之扰;
//生成新的四位整数验证码
//session_id($_GET["sid"]);

//开启session;
$authnum_session = '';
$str = 'ABCDEFGHIJKMNPQRSTUVWXYZ1234567890';
//定义用来显示在图片上的数字和字母;
$l = strlen($str);
//得到字串的长度;
//循环随机抽取四位前面定义的字母和数字;
for ($i=1; $i<=4; $i++)
{
$num=rand(0,$l-1);
//每次随机抽取一位数字;从第一个字到该字串最大长度,
//减1是因为截取字符是从0开始起算;这样34字符任意都有可能排在其中;
$authnum_session.= $str[$num];
//将通过数字得来的字符连起来一共是四位;
}

$_SESSION["checkCode"]=$authnum_session;
//用session来做验证也不错;注册session,名称为authnum_session,
//其它页面只要包含了该图片
//即可以通过$_SESSION["checkCode"]来调用
//生成验证码图片,

//srand((double)microtime()*1000000);
mt_srand();

$im = imagecreate(100,40);//图片宽与高;
//主要用到黑白灰三种色;
$black = ImageColorAllocate($im, mt_rand(0,245),mt_rand(0,200),mt_rand(0,200));
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 200,200,200);
//将四位整数验证码绘入图片
imagefill($im,168,30,$gray);
//如不用干扰线,注释就行了;
$li = ImageColorAllocate($im, 220,220,220);
for ($i=0; $i<0; $i++)
{//加入3条干扰线;也可以不要;视情况而定,因为可能影响用户输入;
imageline($im,mt_rand(0,30),mt_rand(0,41),mt_rand(80,90),mt_rand(0,41),$li);
} //字符在图片的位置;
//imagestring($im, 5, 8, 2, $authnum_session, $white);

// Set the enviroment variable for GD
putenv('GDFONTPATH=' . realpath('.'));

// Name the font to be used (note the lack of the .ttf extension)
//$font = 'mvboli';

//$font = imageloadfont("mvboli.ttf");

//imagestring($im,$font, 8, 2, $authnum_session, $white);

//imagettftext ( $im,20.0, 0, 0, 30, $white,"FELIXTI.TTF", $authnum_session );
for ($i=0; $i<4; $i++)
{
imagettftext ( $im,20.0, mt_rand(0,40)-20, $i*25+3, 30, $white,"FELIXTI.TTF", substr($authnum_session,$i,1) );
}

for ($i=0; $i<90; $i++) //加入干扰象素
{
imagesetpixel($im, mt_rand()%100-2 , mt_rand()%40-2 , $gray);
}
ImagePNG($im);
ImageDestroy($im);
?>

同样这行代码需要一个字体文件,你可以把它改成你拷过来的的字体文件名

imagettftext ( $im,20.0, mt_rand(0,40)-20, $i*25+3, 30, $white,"FELIXTI.TTF", substr($authnum_session,$i,1) );

热心网友 时间:2022-04-07 16:13

你这个dfl.php有错误输出吧,所以才看到的是乱码,肯定也不是全乱码,有一些还是看得清的,比如错误信息那些,估计是你这里有未定义的变量的原因,imagettftext($im,20,0,3,25,$font,"comic.ttf",$str); $font就没定义吧,应该是这样吧, imagettftext($im,20,0,3,25,$font="comic.ttf",$str);

再不行,可以留言或HI我,发个验证码类给你吧,pengzl_gz@163.com

热心网友 时间:2022-04-07 17:47

comic.ttf,没有找到这个字体,在网上搜一下这个字体,放到同级目录就好了

热心网友 时间:2022-04-07 19:39

<?php
session_start();
function random($len) {
$srcstr = "1a2s3d4f5g6hj8k9qwertyupzxcvbnm";
mt_srand();
$strs = "";
for ($i = 0; $i < $len; $i++) {
$strs .= $srcstr[mt_rand(0, 30)];
}
return $strs;
}

//随机生成的字符串
$str = random(4);

//验证码图片的宽度
$width = 50;

//验证码图片的高度
$height = 25;

//声明需要创建的图层的图片格式
@ header("Content-Type:image/png");

//创建一个图层
$im = imagecreate($width, $height);

//背景色
$back = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);

//模糊点颜色
$pix = imagecolorallocate($im, 187, 230, 247);

//字体色
$font = imagecolorallocate($im, 41, 163, 238);

//绘模糊作用的点
mt_srand();
for ($i = 0; $i < 1000; $i++) {
imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $pix);
}

//输出字符
imagestring($im, 5, 7, 5, $str, $font);

//输出矩形
imagerectangle($im, 0, 0, $width -1, $height -1, $font);

//输出图片
imagepng($im);

imagedestroy($im);

$str = md5($str);

//选择 cookie
//SetCookie("verification", $str, time() + 7200, "/");

//选择 Session
$_SESSION["verification"] = $str;

验证码文件

文件调用

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>首页</title>
<link rel="stylesheet" type="text/css" href="css/main.css" />
<script type="text/javascript" src="jquery-1.9.1.min.js"></script>
<script type="text/javascript">
function changing(){
document.getElementById('checkpic').src="checkcode.php?"+Math.random();
}
</script>
</head>

<body>
<img id="checkpic" onclick="changing();" src='checkcode.php' />
</body>
</html>

热心网友 时间:2022-04-07 21:47

header('Content-type: image/jpeg');
做个声明看看

热心网友 时间:2022-04-08 00:11

是不是UTF-8的原因

热心网友 时间:2022-04-08 02:53

注意你的编码问题,只要是有汉字问题,就会有编码问题

热心网友 时间:2022-04-08 05:51

你设置一下坐标那个 Y值 它是字符的基线,你把它设大一点..

让字符靠下显示... 试试吧...下班儿了...来不及看细看代码了..闪了先...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 嘴唇上有黑印用蜜蜡和棉线去除了胡须 键盘的26个英文字母是按什么顺序排列的 键盘为什么要这样分布? Old Tom the killer whale,的翻译 求牛人,将键盘上26个字母编个顺序。 键盘进水不能用了怎么办? 键盘26个字母口诀 asdfghjkl连起来是一句什么话 LKJHGFDSA连起来是什么意思 zxcvbnm连起来是1句甚么话 zxcvbnm连起来是一句什么话 zxcvbnm连起来是一句什么话? 怎么制作风车? 纸风车的制作方法和步骤是怎么样的? 风车的制作 制作风车的过程 风车的制作方法是什么? 风车的制作方法 怎样制作风车 图解 风车的制作过程。 ppt怎么做一个会转的风车 帮我找一套初一上册地理的期末模拟题 请帮忙写一篇观看2010年亚运会开幕式的日记 键盘上的字母是按什么顺序排列的? 形容烟花的燃放的句子。 税控盘数据和小规模增值税申报表计算结果不一致怎么办? 天津有没有华为的认证考试机构? 急!!!! 天津新盟教育取得华为培训认证了吗? 粉饼、蜜粉和腮红的区别 粉饼和蜜粉有什么区别啊? 散粉、蜜粉、粉饼等的区别是什么? 粉饼和蜜粉的区别 蜜粉和粉饼的区别 如何? 粉饼、粉密、散粉有什么区别? 冬季白桃什么时候成熟季节 冬桃什么时候成熟 冬桃什么时候开花 雪桃和冬桃有什么区别 冬桃是什么 冬桃苗的品种有哪些? 冬桃什么时候种植,对气温有什么要求??