一个无需GD库支持的显示校验码的类
<?php
/* * Example * * include("verify.php"); * session_start(); * $v = new VerifyCode(); * print($v->getCode()); * $code = isset($_SESSION['SE_verifycode']) ? $_SESSION['SE_verifycode'] : ""; * print("Print it out for debug : {$code}<br>"); * print($v->checkCode($code) ? "check success" : "check failed"); * */ class VerifyCode {
var $codeLength = 4; var $codeColor = "#888888"; var $codeDisturb = "#666666"; var $bgColor = "#eeeeee"; var $bgDisturb = "#cccccc"; var $version = "Build 20050512"; var $author = "aDang @ bbs.freecity.cn"; var $code = array( array(array(0,1,1,1,0), array(0,1,0,1,0), array(0,1,0,1,0), array(0,1,0,1,0), array(0,1,0,1,0), array(0,1,1,1,0)), array(array(0,0,1,0,0), array(0,0,1,0,0), array(0,0,1,0,0), array(0,0,1,0,0), array(0,0,1,0,0), array(0,0,1,0,0)), array(array(0,1,1,1,0), array(0,0,0,1,0), array(0,0,1,0,0), array(0,1,0,0,0), array(0,1,0,0,0), array(0,1,1,1,0)), array(array(0,1,1,1,0), array(0,0,0,1,0), array(0,1,1,1,0), array(0,0,0,1,0), array(0,0,0,1,0), array(0,1,1,1,0)), array(array(0,1,0,1,0), array(0,1,0,1,0), array(0,1,1,1,0), array(0,0,0,1,0), array(0,0,0,1,0), array(0,0,0,1,0)), array(array(0,1,1,1,0), array(0,1,0,0,0), array(0,1,1,1,0), array(0,0,0,1,0), array(0,0,0,1,0), array(0,1,1,1,0)), array(array(0,1,1,1,0), array(0,1,0,0,0), array(0,1,1,1,0), array(0,1,0,1,0), array(0,1,0,1,0), array(0,1,1,1,0)), array(array(0,1,1,1,0), array(0,0,0,1,0), array(0,0,0,1,0), array(0,0,1,0,0), array(0,0,1,0,0), array(0,0,1,0,0)), array(array(0,1,1,1,0), array(0,1,0,1,0), array(0,1,1,1,0), array(0,1,0,1,0), array(0,1,0,1,0), array(0,1,1,1,0)), array(array(0,1,1,1,0), array(0,1,0,1,0), array(0,1,0,1,0), array(0,1,1,1,0), array(0,0,0,1,0), array(0,1,1,1,0)), );
function getCode() { $verifyCode = $this->_getRandNum($this->codeLength); $_SESSION['SE_verifycode'] = $verifyCode; return $this->_getTable($verifyCode); }
function checkCode($code) { $verifyCode = isset($_SESSION['SE_verifycode']) ? $_SESSION['SE_verifycode'] : ""; if(isset($_SESSION['SE_verifycode'])) unset($_SESSION['SE_verifycode']); return $code == $verifyCode; }
function _getTable($str) { $str = "$str"; $ret = ""; for($l = 0; $l < strlen($str); $l++){ $ret .= "<table border='0' cellspacing='0' cellpadding='0' align='left'>"; for($i = 0; $i < 6; $i++){ $ret .= "<tr>"; for($j = 0; $j < 5; $j++){ $color = $this->code[$str[$l]][$i][$j] ? (rand(1, 3) == 1 ? $this->codeDisturb : $this->codeColor) : (rand(1, 3) == 1 ? $this->bgDisturb : $this->bgColor); $ret .= "<td width='3' height='3' bgcolor='{$color}'><img name='' src='' width='1' height='1' alt=''></td>"; } $ret .= "</tr>"; } $ret .= "</table>"; } return $ret; }
function _getRandNum($length) { $code = ""; $base = ord('0'); list($mSec, $Sec) = explode(' ', microtime()); srand((float) $Sec + ((float) $mSec * 100000)); for($i = 0; $i < $length; $i++){ $num = rand() % 10; $code .= chr($base + $num); } return $code; }
}
?>
|