2018.09.03
.
.
目录结构:
verify(文件夹)
├─index.php 主页文件
├─captcha.php 生成验证码文件
├─simhei.ttf 验证码所用字体(黑体),其他字体也可以
├─verify.php 对比验证码
index.php:
<!DOCTYPE>
<html>
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<title>验证码</title>
<meta name="description" content=""/>
<meta name="keywords" content=""/>
<link href="../bootstrap-3.3.7/dist/css/bootstrap.min.css" rel="stylesheet"/>
<script type="text/javascript" src="../bootstrap-3.3.7/dist/js/tests/vender/jquery.min.js"></script>
<script type="text/javascript" src="../bootstrap-3.3.7/dist/js/bootstrap.min.js"></script>
</head>
<body>
<form class="form-group" action="verify.php" method="post">
<div class="clearfix">
<div class="form-group has-feedback pull-left" style="width:180px;">
<input class="form-control" type="text" name="verify" id="verify" placeholder="验证码" />
</div>
<img class="pull-left img-rounded" id="code" style="border:1px solid #ccc" width="100" src="captcha.php" alt="" onclick="this.src='captcha.php?'+Math.random()"/>
</div>
<div class="clearfix">
<button class="pull-left btn btn-primary btn-sm" type="submit">
<i class="glyphicon glyphicon-log-in"> </i>Login
</button>
</div>
</form>
</body>
</html>
captcha.php:
<?php
$w = 100;
$h = 30;
$len = 4;
captcha($w, $h, $len);
function captcha($w, $h, $len){
//1.生成画布
$img = imagecreatetruecolor($w, $h);
//2.填充背景颜色
$bg = imagecolorallocate($img, mt_rand(201,255), mt_rand(201,255), mt_rand(201,255));
imagefill($img, 0, 0, $bg);
//3.绘制随机验证码
$code = get_code($len);
session_start();
$_SESSION['code'] = $code; //将验证码写进session文件中
for($i=0; $i<strlen($code); $i++){
$color = imagecolorallocate($img, mt_rand(110,200), mt_rand(110,200), mt_rand(110,200));
imagettftext($img, mt_rand(18,26), mt_rand(-20,20), 18*($i+1), 25, $color, 'simhei.ttf', $code[$i]);
}
//4.增加干扰线
for($i=0; $i<strlen($code); $i++){
$color = imagecolorallocate($img, mt_rand(110,200), mt_rand(110,200), mt_rand(110,200));
imageline($img, mt_rand(0,100), mt_rand(0,30), mt_rand(0,100), mt_rand(0,30), $color);
}
//测试
header('Content-Type:image/jpeg');
imagejpeg($img);
}
//生成随机字符串
function get_code($len){
$charset = 'abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789'; //57
$code = '';
for($i=0; $i<$len; $i++){
$code .= $charset[mt_rand(0, 56)];
}
return $code;
}
字体文件:
打开我的电脑->C盘->windows->Fonts,在Fonts目录下就可以找到字体文件,也可以在网上下载
verify.php:
<?php
$verify = $_POST['verify'];
session_start();
$code = $_SESSION['code'];
if(strtolower($verify) != strtolower($code)){
my_alert('你他妈瞎啊!', './captcha.html');
}else{
my_alert('验证成功!', '../calculator.php');
}
function my_alert($str,$url){
echo '<script>alert("'.$str.'");location.href="'.$url.'";</script>';
}
网友评论