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

来源:https://www.sucaihuo.com/php/550.html 2015-12-29 10:57浏览(2489) 收藏

网上的中文验证码不多,今天就分享个不错的中文验证码,支持自定义中文、字体、背景色等
PHP检测中文验证码实例演示
分类:PHP > 插件 难易:初级
下载资源 下载积分: 320 积分
关注公众号,免费赠送安装视频教程、环境和学习视频,后面会不断更新。

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['sucaihuo_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中的sucaihuo_code是否一致。若返回1则说明验证码正确,否则验证不通过。

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

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

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

系统已开启自动识别垃圾评论机制,识别到的自动封号,下载出错或者资源有问题请联系全栈客服QQ 1915635791

1 2