php实现简单的验证码功能

1.根据php中的GD库对图片进行处理,绘制出验证码的图片,code.php中2.表单界面,简单的session保存及与用户输入对比,确定是否验证正确,form.php中

<?php
    session_start();//必须位于脚本的最顶端
   $image=imagecreatetruecolor(100, 30);//imagecreatetruecolor函数建一个真彩色图像
   //生成彩色像素
   $bgcolor=imagecolorallocate($image, 255, 255, 255);//白色背景     imagecolorallocate函数为一幅图像分配颜色
   $textcolor=imagecolorallocate($image,0,0,255);//蓝色文本
   //填充函数,xy确定坐标,color颜色执行区域填充颜色
   imagefill($image, 0, 0, $bgcolor);
   $captch_code="";//初始空值

   //该循环,循环取数
   for($i=0;$i<4;$i++){
     $fontsize=6;
     $x=($i*25)+rand(5,10);
     $y=rand(5,10);//位置随机
    //  $fontcontent=$i>2?chr(rand(97,122)):chr(rand(65,90));//是小写,否则是大写
    $data=‘abcdefghijkmnpqrstuvwxyz3456789‘;
    $fontcontent=substr($data,rand(0,strlen($data)-1),1);//strlen仅仅是一个计数器的工作  含数字和字母的验证码
                                                           //可以理解为数组长度0到30

$fontcolor=imagecolorallocate($image,rand(0,100),rand(0,100),rand(0,100));//随机的rgb()值可以自己定

    imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); //水平地画一行字符串
    $captch_code.=$fontcontent;
}
    $_SESSION[‘authcode‘]=$captch_code;//将变量保存再session的authcode变量中

    //该循环,循环画背景干扰的点
    for($m=0;$m<=600;$m++){

     $x2=rand(1,99);
     $y2=rand(1,99);
     $pointcolor=imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255));
    imagesetpixel($image,$x2,$y2,$pointcolor);// 水平地画一串像素点
    }

    //该循环,循环画干扰直线
   for ($i=0;$i<=10;$i++){
       $x1=rand(0,99);
       $y1=rand(0,99);
       $x2=rand(0,99);
       $y2=rand(0,99);
       $linecolor=imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255));
       imageline($image,$x1,$y1,$x2,$y2,$linecolor);//画一条线段

   }
   header(‘content-type:image/png‘);
   imagepng($image);
   //销毁
   imagedestroy($image);
?>

<--------------------------------code.php---------------------------结束----------------------------------------->
<?php
// session 存值并匹配用户输入值
    if (isset($_REQUEST[‘authcode‘])) {
        session_start();
        if (strtolower($_REQUEST[‘authcode‘])==$_SESSION[‘authcode‘]) {//strtolower转化为小写的函数
            echo"输入正确!";
            # code...
        }
        else{
            echo"输入错误!";
        }
        exit();
    }
?>
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 简单的表单提交代码 -->
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>简单验证码的实现</title>
</head>
<body>
    <form method="post" action="./form.php">
    <p>验证码图片:<img src="code.php" onClick="this.src=‘code.php?nocache=‘+Math.random()" style="cursor:hand" alt="点击换一张"/>点击图片可更换验证码</p>
    <p>请输入图片中的内容:<input type="text" name="authcode" value=""/></p>
    <p><input type="submit" width="20px" height=19px value="提交"></input></p>
    </form>

</body>
</html>

<---------------------------------form.php    表单界面---------------结束---------------------------------------------->
时间: 2024-10-10 17:06:19

php实现简单的验证码功能的相关文章

利用Pillow,几行代码实现的最简单的Django页面验证码功能

验证码本质上就是生成带有文字的图片,用来区分人与机器的行为.如果考虑到防止破解自然会涉及到许多复杂的算法,用以防止从图片中容易地识别出文字,但作为一个简单的例子,我们就使用最简单的方法来达成一个验证码的功能.以下就是利用Python的第三方图形处理模块Pillow来实现的一个简单的验证码功能: 首先,在accounts.views中定义一个生成验证码的函数: from PIL import Image, ImageDraw, ImageFont from django.http.response

简单 验证码 功能

在贴代码之前首先简述一下验证验证码原理:随机获取验证码的值,把这个值存到session中,其作用可想而知就是要拿来跟前台数据作比较,通过Graphics将值进行模糊处理之后传到前台页面展示. 1 package com.skss.util; 2 3 4 import java.awt.Color; 5 import java.awt.Font; 6 import java.awt.Graphics; 7 import java.awt.image.BufferedImage; 8 import

Servlet实现简单的登陆功能(带验证码)

"纸上得来终觉浅",动手比看书印象更深,学到的更多.下面用Servlet实现简单的登陆功能,来巩固对Servlet的学习. 1.在WEB-INF下新建一个名为index.html作为登陆界面. index.html代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title>

单一功能学习----简单的验证码

一.验证码的作用 1.防止大量重复请求.一般在登录的时候需要验证码,验证码的作用就是拖延时间,让每次登录的操作时间间隔变长,这样可以防止有人暴力破解密码登录. 二.设计思路 1.最简单的验证码,就是一串数字了.小时候看到的就是这个样子的,4个数字. 2.这串数字应该是随机的. 3.这串数字是可以更换的(以前看到的换一张按钮). 4.要有一个输入框,输入验证码. 5.每登录一次,若失败应该更换验证码. 6.稍微高级一点,验证码可以变成一张图片,防止恶意软件直接从前端代码获取验证码值. 7.更高级的

简单制作验证码和绘制图片

今天仍然是完善一般处理程序小项目,但是昨天小小的项目已经终结,今天只是完善一下新的样式罢啦,嘿嘿,我们通常在网上浏览图片时间都会看到图片上面呈现有水印字体的样式,其实这些图片都是通过一些简单的小技术来修饰的:另外我们现在在网上随处可见注册页面,当我们想在一个网站上面注册新的用户时间,需要注册完信息以后填写随机生成的验证码,或者我们想要登录一个网站时间也需要验证码的填写,由此可见,验证码也是我们程序员需要必备的小技术哦,下面就来总结一下这两项小功能的实现. 一.图片上的水印字体 我们可以看到第一张

解析最简单的验证码

最近在学python,正好遇到学校需要选宿舍,就用python写了一个抢宿舍的软件.其中有一个模块是用来登陆的,登陆的时候需要输入验证码,不过后来发现了直接可以绕过验证码直接登陆的bug.不过这是另外的话题,开始的时候我并没有发现这个隐藏起来的秘密,所以我就写了这个python代码段用来实现解析验证码的功能. 我们学校的验证码是最简单的验证码,形式大概如下: 其中这个图片的大小是60X24像素的,大概每个数字的大小是15X24像素. 观察这个验证码之后可以发现,验证码中只有数字而且数字的字体很规

使用JS来实现验证码功能

最近想为自己的Django博客添加验证码功能,本来想使用第三方库来实现的,不过考虑到添加第三方库对性能的影响,以及第三方库是否安全可靠的问题,还是用自己的代码来实现吧.反正用JS来实现验证码功能又不是很难. 简单来说,用一个create_code()方法在页面中生成验证码,然后control_submit()方法检测验证码文本框(id="user_input_code")的键盘输入事件,当文本框输入了超过4个字符后,调用verify_code ()检测输入的字符与生成的验证码是否一致,

thinkphp验证码功能

Think\Verify类可以支持验证码的生成和验证功能. 为了显示这个验证码功能,第一要有控制器,再就是有方法,然后是显示的页面. 一.最简单的方式生成验证码 (1)我们还是继续在那个控制器编写方法 这个方法显示这个验证码的页面 public function xianshi() { $this->show(); } public function shengcheng() { //造验证码的对象 $v = new \Think\Verify(); //生成验证码 $v->entry();

Php实现验证码功能

验证码这样的功能可以说是无处不在了,接下来使用php来实现验证码这样的功能,这里我是将验证码实现抽取到一个类中独立开来,那么后面如果再使用到验证码功能,直接引入该类文件并创建该类的实例,就可以使用验证码了,代码如下: 验证码类文件vcode.class.php <?php /** *验证码类 */ class Vcode{ private $width;//图片宽度 private $height;//图片高度 private $num;//验证码个数 private $img;//图片资源 p