zoukankan      html  css  js  c++  java
  • PHP

    一,主页 index.php  

    <!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>Document</title>
    </head>
    <body>
    <script type="text/javascript">
    function refresh() {
    document.getElementById("codeP").src = "picture.php?tm="+Math.random();
    }
    </script>
    <form action="check.php" method="post">
    <div>
    <img id="codeP" src="picture.php" onclick="refresh()"/>
    <input id="codeT" type="text" name="codeT" />
    </div>
    </form>
    </body>
    </html>
     
    二,生成验证码 picture.php
    <?php

    header("Cache-Control: no-cache, must-revalidate");
    // 声明图像大小
    $img_height=70;
    $img_width=25;
    $authnum='';
    // 验证码内容
    $ychar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
    $list=explode(",",$ychar);
    for($i=0;$i<4;$i++){
    $randnum=rand(0,35);
    $authnum.=$list[$randnum];
    }
    // session有效
    session_start();

    // 将每次生成的验证码保存在session中
    $_SESSION["sessionCode"] = $authnum;
    // 生成一个基本大小图像
    $aimg = imagecreate($img_height,$img_width);
    // 图像填充颜色
    imagecolorallocate($aimg, 255,255,255);
    $black = imagecolorallocate($aimg, 0,0,0);
     
    for ($i=1; $i<=100; $i++) { imagestring($aimg,1,mt_rand(1,$img_height),mt_rand(1,$img_width),"@",imagecolorallocate($aimg,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)));
    }
     
    //为了区别于背景,这里的颜色不超过200,上面的不小于200
    for ($i=0;$i<strlen($authnum);$i++){
    imagestring($aimg, mt_rand(3,5),$i*$img_height/4+mt_rand(2,7),mt_rand(1,$img_width/2-2), $authnum[$i],imagecolorallocate($aimg,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)));
    }
    imagerectangle($aimg,0,0,$img_height-1,$img_width-1,$black);//画一个矩形
    Header("Content-type: image/PNG");
    ImagePNG($aimg); //生成png格式
    ImageDestroy($aimg);
    ?>
     
    三,接收测试 验证码 check.php
    <!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>Document</title>
    </head>
    <body>
    <?php
    session_start();
    $codeT = $_POST['codeT'];
    $codeP = $_SESSION["sessionCode"];
    echo '输入:'.$codeT.'<br>';
    echo '验证码'.$codeP.'<br>';
    if ($codeT==$codeP) {
    echo '正确<br>';
    } else {
    echo '错误';
    }?>
    </body>
    </html>
  • 相关阅读:
    010-spring事务管理
    009-事务管理
    008-ThreadLocal
    Bmob用户管理操作
    Textview下划线注册用户跳转实现
    Android中多个调用Activity的问题
    解决android:theme="@android:style/Theme.NoDisplay" 加入这句话后程序不能运行
    友盟自动更新
    友盟消息推送和更新XML配置
    Android 云服务器的搭建和友盟APP自动更新功能的实现
  • 原文地址:https://www.cnblogs.com/500m/p/11218658.html
Copyright © 2011-2022 走看看