php5中验证码的制作

GD库的函数
   1,imagecreatetruecolor -----创建一个真彩色的图像
     imagecreatetruecolor(int x_size,int y_size)  //x表示宽,y表示高
  
   2,imagecolorallocate  为一幅图像分配颜色(调色板)
     imagecolorallocate(resource image,int red,int green,int blue)//red,green,blue----三原色

 

   3,imagestring  绘图函数
     iamgestring(resource image,font,int x,int y,内容,颜色);

 

   4,输出函数
      php的header是定义头的动作,php5中支持3中类型:
      1,Content-type:xxxx/yyyy
      2,Location:xxxx:yyyy/zzzz
      3,Status:nnn xxxxxx
   
      xxxx/yyyy表示内容文件的类型
      如:image/gif
            image/jpeg
            image/png

      例子:header("Content-type:image/jpeg")
     
      GD库中有对应的image类型
          imagejpeg(),imagegif(),imagepang()

 

  5,imageline画线函数

      iamgeline(resource image,int x1,int y1,int x2,int y2,int color);
           image ---图片
            x1    ---启始坐标
            y1   
            x2    ---终点坐标
            y2   


   6,imagesetpixel画点函数   
         imagesetpixel(resource image,int x,int y,int color)

 

   7,imagettftext带字体的写入函数
         imagettftext(resource image,float size,float angle,int x,int y,int color,string fontfile,string text)
         

   8,php验证码插入中文的方法   
        iconv("gb2312","utf-8","字符串"); //首先要将文字转换成utf-8格式   

 

 

   9,随机函数
         1,rand([int min,int max]) //rand(1,4) 生成1-4的数
         2, dechex(十进制数) //转换为十六进制

 

 

 

---------------------------------------------------------------------------------------------------------------------------

 

 

做验证码的步骤:
 
     生成随机数 -- 创建图片 -- 随机数写成图片 --保存在session中

 

 

 

输入验证码例子

---------------------------------------------------------------------------------------------------------------------------

gdchek.php

 

 

<?php
/*
 * 生成图片验证码
 * and open the template in the editor.
 */
session_start();
for($i=0;$i<4;$i++){
 $rand.=dechex(rand(1,15));  //生成4位数包含十六进制的随机数
}
$_SESSION[check_gd]=$rand;


$img=imagecreatetruecolor(100,30);  //创建图片

 

$bg=imagecolorallocate($img,0,0,0);  //第一次生成的是背景颜色


$fc=imagecolorallocate($img,255,255,255);  //生成的字体颜色

 

//给图片画线
for($i=0;$i<3;$i++){
    $te=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
    imageline($img,rand(0,15),0,100,30,$te);
}

 

//给图片画点
for($i=0;$i<200;$i++){
    $te=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
    imagesetpixel($img,rand()%100,rand()%30,$te);
}


//首先要将文字转换成utf-8格式
//$str=iconv("gb2312","utf-8","呵呵呵");
//加入中文的验证

//smkai.ttf是一个字体文件,为了在别人的电脑中也能起到字体作用,把文件放到项目的根目录,可以下载,还有本机C:/WINDOWS/Fonts中有
imagettftext($img,11,10,20,20,$fc,"simkai.ttf","你好你好");

 

//把字符串写在图片中
//imagestring($img,rand(1,6),rand(3,70),rand(3,16),$rand,$fc);

 

//输出图片

header("Content-type:image/jpeg");
imagejpeg($img);
?>

 

----------------------------------------------------------------------------------------------------------------------------

login.php

 

 

<?php
/*
 *
 * 

 */
session_start();
if($_POST[sub]){

 

    //判断验证码是否相同
    if($_POST[gd_pic]==$_SESSION[check_gd]){

        echo "验证成功!";
      }else{
        echo "验证码错误";
    }
}

 

?>

<form action="login.php" method="POST">

用户名:<input type="text" name="user"/><br>

密码:<input type="password" name="pwd"/><br>

验证码:<imput type="text" name="gd_pic"/><img src="gdchek.php"><br>

<imput type="submit" name="sub" value="submit"/>

</form>

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值