A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

      【黑马程序员济南】PHP模块讲解之验证码部分


     在日益庞大的网民的面前,如何能够合理的规避以防止服务器被恶意DoS攻击或者不法之徒利用机器程序自动贴牛皮癣广告?一条小小的验证码功能就可以阻挡大部分的问题,所以今天我们就来研究一下如何生成验证码。

要求:
        码值:有4位,大写字母和数字组成
       验证码图像:存在背景,在有限的图像中选择作为背景。文字居中显示,文字颜色有白色黑色
码值
[PHP] 纯文本查看 复制代码
<?php
/*黑马程序员济南中心*/
/*
*如何生成随机数
* 有4位,大写字母和数字组成
* 随机生成
*/

//列出所有的大写字母和数字作为一个集合
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789';
$chars_len = strlen($chars);//获取集合长度

//规定验证码值的长度
$code_len = 4;
//初始化验证码值
$code = '';
//随机选取4位字符
for($i = 0;$i<$code_len;$i++){
        //随机获取一个字符下标
        $rand_index = mt_rand(0,$chars_len -1);
        //将获取到的下标从字符的集合中取出并追加到$code中
        $code .= $chars[$rand_index];
}
//$code就是我想获取到的4位的随机数
echo $code;
存生成好的验证码我们是需要将其保存起来,用来验证用户输入的验证信息是否正确
而验证码只需要存在一个会话周期就可以了,所以就不需要存储到数据库中,我们将其存储于session中。
[PHP] 纯文本查看 复制代码
//开启session
session_start();
$_SESSION['code'] = $code;
验证码图像
简单字符串(字母数字)写在画布上的函数:
imageString(
         画布,字体,位置x,位置y,字符串内容,颜色
);
字体:imagestring函数,使用的内置字体。由1-5表示。
位置:由字符串左上角的坐标来确定
颜色:也是需要预先分配好的。imagecolorallocate()
[PHP] 纯文本查看 复制代码
<?php[/align]/*黑马程序员济南中心*/
/*imagestring(resource $image , int $font , int $x , int $y , string $s , int $col)
*        — 水平地画一行字符串
*        $image代表要将生成好的验证码写入到的画布
*        $font 使用内置的字体,有1,2,3,4,5这5种型号
*        $x,$y代表验证码在画布中的坐标位置
*        $s 代表生成好的字符串
*        $col        代表字体所用的颜色
*/
//取一张图片作为背景
$bg_file = '/1.jpg';
//根据该图片,创建画布
$image = imagecreatefromjpeg($bg_file);
//分配字体颜色,随机分配,黑色或者白色
if(mt_rand(0,1) ==1){
        //如果是1就是设置字体颜色为黑色
        $str_color = imagecolorallocate($image,0,0,0);
}else{
        //如果不是1就设置字体颜色为白色
        $str_color = imagecolorallocate($image,255,0xff,255);
}

//内置5号字体
$font = 5;
//位置
$str_x = 50;
$str_y = 5;

//生成带验证码的图片
imagestring($image,$font,$str_x,$str_y,$code,$str_color);

一定要输出图片和销毁画布:
[PHP] 纯文本查看 复制代码
<?php
/*黑马程序员济南中心*/
//输出带有验证码的图片并销毁画布
header('Content-Type:image/jpeg');
imagejpeg($image);

imagedestroy($image);

这样我们就生成了一个验证码图片,不知道大家对今天的知识了解程度如何啊?
如果你想了解更多黑马课程请点击这里,如果你想加入黑马这个大家庭学习先进技术,广交天下好友!
黑马程序员济南中心联系电话:0531-55696830

1 个回复

倒序浏览
                                                        
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马