最新赞助活动温馨提示:自愿赞助服务器费用,学生和没有工作的整站资源免费下载!
头像

PHP检测中文验证码实例演示

来源:http://www.erdangjiade.com/ 沐浴春风 2015-12-29 10:57浏览(1752)

网上的中文验证码不多,今天就分享个不错的中文验证码,支持自定义中文、字体、背景色等

0、请不要问“在不在”之类的问题,有问题直接问!1、学生或暂时没有工作的童鞋,整站资源免费下载!2、¥9.9充值终身VIP会员,加我微信,826096331 拉你进VIP群学习!3、程序员加油,技术改变世界。 在线 充值

PHP检测中文验证码实例演示
分类:PHP > 插件 难易:初级
查看演示 下载资源:

加我微信,拉你进VIP群学习:

下载资源 下载积分: 160 积分

PHP生成验证码,注意font字体路径要对,否则显示图片不存在

session_start();

//1>设置验证码图片大小的函数
$image = imagecreatetruecolor(200, 60);
//5>设置验证码颜色 imagecolorallocate(int im, int red, int green, int blue);
$bgcolor = imagecolorallocate($image, 255, 255, 255); //#ffffff
//6>区域填充 int imagefill(int im, int x, int y, int col)  (x,y) 所在的区域着色,col 表示欲涂上的颜色
imagefill($image, 0, 0, $bgcolor);
//7>设置ttf字体
$fontface = 'simhei.ttf';
//7>设置字库,实现简单的数字储备
$str = '天地不仁以万物为刍狗圣人不仁以百姓为刍狗这句经常出现在控诉暴君暴政上地残暴不仁把万物都当成低贱的猪狗来看待而那些高高在上的所谓圣人们也没两样还不是把我们老百姓也当成猪狗不如的东西但实在正取的解读是地不情感用事对万物一视同仁圣人不情感用事对百姓一视同仁执子之手与子偕老当男女主人公含情脉脉看着对方说了句执子之手与子偕老女方泪眼朦胧含羞地回一句讨厌啦这样的情节我们是不是见过很多但是我们来看看这句的原句死生契阔与子成说执子之手与子偕老于嗟阔兮不我活兮于嗟洵兮不我信兮意思是说战士之间的约定说要一起死现在和我约定的人都走了我怎么活啊赤裸裸的兄弟江湖战友友谊啊形容好基友的基情比男女之间的爱情要合适很多吧';
//str_split()切割字符串为一个数组,一个中文在utf_8为3个字符
$strdb = str_split($str, 3);
//>11
$captcha_code = '';
//8>生成随机的汉子
for ($i = 0; $i < 4; $i++) {
    //设置字体颜色,随机颜色
    $fontcolor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120));            //0-120深颜色
    //随机选取中文
    $in = rand(0, count($strdb));
    $cn = $strdb[$in];
    //将中文记录到将保存到session的字符串中
    $captcha_code .= $cn;
    /* imagettftext (resource $image ,float $size ,float $angle ,int $x ,int $y,int $color,
      string $fontfile ,string $text ) 幕布 ,尺寸,角度,坐标,颜色,字体路径,文本字符串
      mt_rand()生成更好的随机数,比rand()快四倍 */
    imagettftext($image, mt_rand(20, 24), mt_rand(-60, 60), (40 * $i + 20), mt_rand(30, 35), $fontcolor, $fontface, $cn);
}
//11>存到session
$_SESSION['erdangjiade_code'] = $captcha_code;

Ajax检测验证码

function checkCode() {
    $.post("ajax.php", {code: $("#input_code").val()}, function(data) {
        if (data == '1') {
            alert("验证码正确!");
        } else {
            alert("验证码错误!");
        }

    }, "json")
}

ajax.php判断传过来的验证码code和系统自动生成在session中的erdangjiade_code是否一致。若返回1则说明验证码正确,否则验证不通过。

SESSION_START();
$code = $_POST['code'];
$code_session = isset($_SESSION["erdangjiade_code"])?$_SESSION["erdangjiade_code"]:"";
if (strtolower($code) == $code_session) {
    echo "1";
} else {
    echo "-1";
}

点击验证码图片,切换新的验证码

function changeCode(obj) {
    obj.attr("src", 'code.php?' + Math.random());
}
声明:本文为原创文章,如需转载,请注明来源erdangjiade.com并保留原文链接:https://www.erdangjiade.com/php/550.html
评论1
头像

友情提示:垃圾评论一律封号 加我微信:826096331拉你进VIP群学习群

  • 头像 沙发
    03-27 08:19
    ngu137
    中文验证码这个实现的不错
1 2