完整的PHP图形验证码程序源码

首先是PHP代码:

<?php

   //随机生成一个4位数的数字验证码
    $num="";
    for($i=0;$i<4;$i++){
    $num .= rand(0,9);
    }
   //4位验证码也可以用rand(1000,9999)直接生成
   //将生成的验证码写入session,备验证页面使用
    Session_start();
    $_SESSION["Checknum"] = $num;
   //创建图片,定义颜色值
    Header("Content-type: image/PNG");
    srand((double)microtime()*1000000);
    $im = imagecreate(60,20);
    $black = ImageColorAllocate($im, 0,0,0);
    $gray = ImageColorAllocate($im, 200,200,200);
    imagefill($im,0,0,$gray);

    //随机绘制两条虚线,起干扰作用
    $style = array($black, $black, $black, $black, $black, $gray, $gray, $gray, $gray, $gray);
    imagesetstyle($im, $style);
    $y1=rand(0,20);
    $y2=rand(0,20);
    $y3=rand(0,20);
    $y4=rand(0,20);
    imageline($im, 0, $y1, 60, $y3, IMG_COLOR_STYLED);
    imageline($im, 0, $y2, 60, $y4, IMG_COLOR_STYLED);

    //在画布上随机生成大量黑点,起干扰作用;
    for($i=0;$i<80;$i++)
    {
   imagesetpixel($im, rand(0,60), rand(0,20), $black);
    }
    //将四个数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成
    $strx=rand(3,8);
    for($i=0;$i<4;$i++){
    $strpos=rand(1,6);
    imagestring($im,5,$strx,$strpos, substr($num,$i,1), $black);
    $strx+=rand(8,12);
    }
    ImagePNG($im);
    ImageDestroy($im);
   ?>

使用方法:
 本程序可以直接运行,运行之后即可看到一个图形验证码,每次刷新都随机生成新码。
 在某页面中使用此程序时,可以用以下HTML代码:

.....
 请输入验证码:
<input type=text name=passcode>
<img src=showimg.php>
.....

这样即可显示出验证码图片。到了验证页面,用以下代码:

...
$code=$_POST["passcode"];
if( $code == $_SESSION["Checknum"]){
验证通过
}else{
验证码错误
}
...

效果预览:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于 PHP 和 GD 库实现的图形验证码登录页面的示例代码: ```php <?php session_start(); // 生成随机验证码 $code = ''; for ($i=0; $i<4; $i++) { $code .= chr(rand(65, 90)); // 生成 A-Z 的随机字母 } // 将验证码存储在 session 中 $_SESSION['code'] = $code; // 创建验证码图片 $image = imagecreatetruecolor(100, 30); $bg_color = imagecolorallocate($image, 255, 255, 255); // 背景色为白色 $font_color = imagecolorallocate($image, 0, 0, 0); // 字体颜色为黑色 imagefill($image, 0, 0, $bg_color); imagettftext($image, 20, 0, 10, 25, $font_color, 'arial.ttf', $code); // 输出验证码图片 header('Content-type: image/png'); imagepng($image); imagedestroy($image); ?> <!-- 在登录页面中显示验证码图片 --> <form action="login.php" method="post"> <label for="username">用户名:</label> <input type="text" name="username" id="username"><br> <label for="password">密码:</label> <input type="password" name="password" id="password"><br> <label for="code">验证码:</label> <input type="text" name="code" id="code"> <img src="captcha.php" alt="验证码"><br> <input type="submit" value="登录"> </form> ``` 以上代码中,首先在服务器端生成一个随机验证码,并将其存储在 session 中。然后使用 GD 库创建一个 100x30 大小的验证码图片,将随机生成的验证码绘制在图片上,并输出图片到客户端。在登录页面中,使用 `<img>` 标签引用验证码图片,并在用户输入验证码时一并提交到服务器端进行验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值