看到百度有时候用gif的附加码,自己也想着实现一个。试试写了一下PHP的。
下面是调用例子:
http://www.meles.cn/vrcode/example.php
实现原理:
核心类:GIFEncoder.class.php实现多张gif合成一张动画
附加码生产页面: test3.php
生成验证信息的例子:example.php,validate.php
test3.php是一个可以公网访问的页面,所以实现了云化的应用。
example.php的代码如下:
<?php
session_start();
$randNum=rand(1000,9999);
$_SESSION['authnum_session'] =$randNum;//验证码保存到SESSION中
//session_destroy();
header("Content-type: text/html; charset=utf-8");
?>
<html>
<head>
<title>session 图片验证实例</title>
<style type="text/css">
#login p{
margin-top: 15px;
line-height: 20px;
font-size: 14px;
font-weight: bold;
}
#login img{
cursor:pointer;
}
form{
margin-left:20px;
}
</style>
</head>
<body>
<form id="login" action="validate.php" method="post">
此例为session验证实例
<span>验证码:</span>
<input type="text" name="validate" value="" size=10>
<img title="点击刷新" src="http://www.meles.cn/vrcode/test3.php?ent_numb=<?php echo $randNum;?>" align="absbottom" οnclick="window.location.reload();"></img>
<input type="submit">
</form>
</body>
</html>
validate.php的代码如下:
<?php
session_start();
//打印上一个session;
//echo "上一个session:<b>".$_SESSION["authnum_session"]."</b><br>";
header("Content-type: text/html; charset=utf-8");
$validate="";
if(isset($_POST["validate"])){
$validate=$_POST["validate"];
echo "您刚才输入的是:".$_POST["validate"]."<br>状态:";
echo "您Session是:".$_SESSION["authnum_session"]."<br>状态:";
if($validate!=$_SESSION["authnum_session"]){
//判断session值与用户输入的验证码是否一致;
echo "<font color=red>输入有误</font>";
}else{
echo "<font color=green>通过验证</font>";
}
}
?>
为了防止外挂开发者破译动画规律,所以恕不提供test3.php的源码。