Home >Backend Development >PHP Problem >How to set image verification code in php

How to set image verification code in php

藏色散人
藏色散人Original
2021-02-25 10:11:433396browse

php method to set image verification code: first generate a random string and save it using session; then create a simple picture, set the background color, text color, and add some interference lines, interferon ; Then fill the image with the generated random string; finally clear the output buffer, and then generate the verification code image.

How to set image verification code in php

The operating environment of this article: windows7 system, PHP7.1 version, DELL G3 computer

PHP generates image verification code (simple)

I am new to php and wrote a web login interface. In addition to the username and password, I felt that it would be cooler to have a verification code, so I wrote an image.php based on the brief introduction in the reference book. Generate a simple image verification code, which is quite emotional and I would like to share it.

1. Image verification code generation steps:

(1) Generate a random string (assuming only 6 digits are needed) and save it using session for verification;

<? = ($i=;$i<;$i++= rand(,= $] = $str;

(2) Create a simple picture (80X20), set the background color, text color, and add some interference lines, interferon;

    $img_handle = Imagecreate(80, 20);  //图片大小80X20
    $back_color = ImageColorAllocate($img_handle, 255, 255, 255); //背景颜色(白色)
    $txt_color = ImageColorAllocate($img_handle, 0,0, 0);  //文本颜色(黑色)    
    //加入干扰线
    for($i=0;$i<3;$i++)
    {
        $line = ImageColorAllocate($img_handle,rand(0,255),rand(0,255),rand(0,255));
        Imageline($img_handle, rand(0,15), rand(0,15), rand(100,150),rand(10,50), $line);
    }    //加入干扰象素
    for($i=0;$i<200;$i++) 
    {
        $randcolor = ImageColorallocate($img_handle,rand(0,255),rand(0,255),rand(0,255));
        Imagesetpixel($img_handle, rand()%100 , rand()%50 , $randcolor);
    }

  (3) Fill the background color of the picture, and then add the generated random characters String filled image;

    Imagefill($img_handle, 0, 0, $back_color);             //填充图片背景色
    ImageString($img_handle, 28, 10, 0, $str, $txt_color);//水平填充一行字符串

(4) Clear the output buffer, generate the verification code image, and display the image.

    ob_clean();   // ob_clean()清空输出缓存区    
    header("Content-type: image/png"); //生成验证码图片    
    Imagepng($img_handle);//显示图片?>

2. Reference of the image verification code [Recommended study: "PHP Video Tutorial"]

Add the verification code image in the form, src="image. php" is the php used to generate the verification code image according to the above steps. In order to increase the effect, the function of js refreshing the verification code has been added. You can refer to it.

<form id="form1" name="form1" method="post" action="post.php">
    <input type="text" name="code" />
    <img  src="image.php" id = "refresh" title="刷新验证码" align="absmiddle" onclick="document.getElementById(&#39;refresh&#39;).src=&#39;image.php&#39; ">
    <font color="#ffffff">点击图片刷新</font>
    <input type="submit" value="登录"/>
</form>

 3. Verification of verification code

In post.php, use the session that saves the string in the first step to match the verification code entered by the user.

<?php
    session_start();    if($_POST[&#39;code&#39;] == $_SESSION[&#39;img_number&#39;]){
        echo "验证码正确";
    }else{
        echo "验证码错误";
    }?>

4. Effect display:

Generated verification code image:

Effect in the login box:

4. Discussion of remaining issues

(1) Why do you need to use ob_clean() to clear the output buffer before generating a verification code image and displaying the image? ?

Since I am not very familiar with PHP, please refer to: http://www.php.net/manual/zh/function.ob-clean.php

(2) Fill in the picture Is there a way to set the size of the font? ?

The ImageString function uses the built-in font and can only be replaced by the imagettftext() function. Please refer to: http://us3.php.net/manual/zh/function.imagettftext.php

Welcome to discuss, please lightly spray~

The above is the detailed content of How to set image 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