Home  >  Article  >  Backend Development  >  How to implement arithmetic verification code in php

How to implement arithmetic verification code in php

不言
不言Original
2018-07-05 15:04:562371browse

This article mainly introduces the method of implementing arithmetic verification code in PHP. It has certain reference value. Now I share it with you. Friends in need can refer to it.

I have recently learned PHP. I also practiced the implementation of image functions and verification codes. Following the teacher’s advice, I wrote an arithmetic verification code function. It was the first time I completed a small exercise independently. I felt quite happy. However, I also knew my own limitations. , so I wrote it out specifically, hoping that the experts from all walks of life can give me some guidance and expand my horizons more

The php code is as follows: Implement the function of the verification code

<?php/**
 * @param int $width 宽度,默认为120
 * @param int $height 高度,默认为50
 * @param int $fontSize 字体的大小
 * @return 图片资源
 */function arithmeticCode($width=120,$height=50,$fontSize=20){
    //开启session
    session_start();    //创建画布
    $img = imagecreatetruecolor($width,$height);    //分配颜色
    $color = imagecolorallocate($img,255,255,255);    //填充颜色
    imagefill($img,0,0,$color);    //干扰点
    for ($i = 0;$i < 500;$i++){        $pixColor = imagecolorallocate($img,mt_rand(100,200),mt_rand(100,200),mt_rand(100,200));
        imagesetpixel($img,mt_rand(0,$width),mt_rand(0,$height),$pixColor);
    }    //干扰线
    for ($i = 0;$i < 4;$i++){        $lineColor = imagecolorallocate($img,mt_rand(0,120),mt_rand(0,120),mt_rand(0,120));
        imageline($img,mt_rand(0,$width),mt_rand(0,$height),mt_rand(0,$width),mt_rand(0,$height),$lineColor);
    }    //定义一个数组存放运算符号
    $arr = [&#39;+&#39;,&#39;-&#39;,&#39;*&#39;];    //计算数组的长度
    $len = count($arr);    //定义一个1到20的数组
    $num = range(1,20);    $numLen = count($num);    //定义一个空数组来存放随机取得的验证码
    $code = [];    for ($i = 0;$i < $len;$i++) {        if ($i == 1) {            $code[] = $arr[mt_rand(0,$len-1)];
        }else {            $code[] = $num[mt_rand(0,$numLen-1)];
        }
    }    $str = implode($code);//将数组转为字符串
    $textColor = imagecolorallocate($img,mt_rand(100,200),mt_rand(100,200),mt_rand(100,200));    $fontAngle = 0;    $x = ($width - $fontSize*3)/2;    $y = ($height - $fontSize) / 2 + $fontSize;
    imagettftext($img,$fontSize,$fontAngle,$x,$y,$textColor,"./img/msyh.ttc",$str);    $res = getRes($code);    //将函数存放在session中
    $_SESSION[&#39;res&#39;] = $res;    //输出图片
    header("content-type:image/png");
    imagepng($img);
}/**
 * @param $arr 一个包含运算符号的数组
 * @return 返回一个运算结果
 */function getRes($arr) {
    $sum = 0;    //判断数组元素下标为1的运算符号是什么
    switch ($arr[1]){        case &#39;+&#39;:            $sum = $arr[0] + $arr[2];            break;        case &#39;-&#39;:            $sum = $arr[0] - $arr[2];            break;        case &#39;*&#39;:            $sum = $arr[0] * $arr[2];            break;
    }    return $sum;
}//调用函数arithmeticCode(100,40,18);

Part of the code of html

<!doctype html><html lang="en"><head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        img {            position: relative;            top: 20px;        }
    </style></head><body><form action="test.php">
    验证码 <input type="text" name="code">
    <img src="./demo5.php" alt="点击刷新">
    <br>
    <button>提交</button></form></body></html><script>
    //实现点击图片刷新验证码的功能
    var img = document.querySelector("img");
    img.onclick = function () {
        this.src = this.src+"?m="+Math.random();
    }</script>

Test of test.php

<?phpsession_start();$res = $_SESSION[&#39;res&#39;];$value = $_GET[&#39;code&#39;];if ($res == $value) {    echo "test success";
}else{    echo "test fail";
}

The above is the composition of my code.
I hope everyone can The great god is willing to teach you [Looking forward to the face]

The above is the entire content of this article. I hope it will be helpful to everyone’s study. For more related content, please pay attention to the PHP Chinese website!

Related recommendations:

Introduction to the use of MongoDB Driver in PHP7

Assigning values ​​in an array to a set of variables in PHP method

The above is the detailed content of How to implement arithmetic verification code in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn