zoukankan      html  css  js  c++  java
  • php随机生成验证图片

    为了防止用户利用机器人自动注册、登录、灌水,现在网站一般都采用了验证码技术,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。

    昨天做学习有一个作业需要自己写图片验证码,写完之后我把它记录下来作为一篇笔记。

    先展示一下我做出来的效果(自己也可根据自己的要求对图片背景、随机数位数、颜色等进行调整)

    php代码如下:

    文件名: idcode.php

    <?php
    session_start();//开启会话
    $img = imagecreatetruecolor(60, 30);//创建真彩图像资源,大小60*30
    $black = imagecolorallocate($img, 0x00, 0x00, 0x00);//分配一个黑色
    $green = imagecolorallocate($img, 0x00, 0xFF, 0x00);//分配一个绿色
    $white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF);//分配一个白色
    imagefill($img,0,0,$white);// 从左上角开始填充白色,即背景颜色为白色
    //生成随机的验证码
    $code = '';
    for($i = 0; $i < 4; $i++) {
        $code .= rand(0, 9);
    }
    $_SESSION['vCode']=$code;//加入会话变量中
    imagestring($img, 5, 8, 8, $code, $black);//imagestring ($image , $font , $x , $y ,$s ,$col )
    //加入噪点干扰,阻止机器识别
    for($i=0;$i<100;$i++) {
        imagesetpixel($img, rand(0, 60) , rand(0, 30) , $black);//在图片上绘出一点。参数 x、y 为欲绘点的坐标,参数 col 表示该点的颜色
        imagesetpixel($img, rand(0, 60) , rand(0, 30) , $green);//绘制绿色的点
    }
    //输出验证码
    header("content-type: image/png");//说明欲输出的图片类型格式
    imagepng($img);//函数用来建立一张 PNG 格式图形
    imagedestroy($img);//销毁图像,释放与 $img 关联的内存
    

      引入HTML中:

     <img src="php/idcode.php" alt="">
    

      最后我的效果如下:

  • 相关阅读:
    SSM(六)JDK动态代理和Cglib动态代理
    SSM(三)Mybatis动态SQL
    MyBatis无限级分类实现的两种方法--自关联与map集合
    idea上MyBatis第一个例子
    idea 给maven项目添加依赖(二)
    idea 创建maven项目(一)
    Java学习笔记——三层架构
    MySQL实现自动使用uuid作为主键以及解决不能调用触发器的一点思路
    Java学习笔记——MySQL创建表结构
    jQuery入门——注册事件
  • 原文地址:https://www.cnblogs.com/xyyl/p/10901100.html
Copyright © 2011-2022 走看看