PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训 » PHP资源共享 » 一个无需GD库支持的显示校验码的类
本页主题: 一个无需GD库支持的显示校验码的类 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

自由的龙

该用户目前不在线
级别: 中级程序员
精华: 1
发帖: 1264
威望: 1267 点
金钱: 12660 PYMB
贡献值: 0 点
在线时间:0(小时)
注册时间:2006-04-16
最后登录:2006-06-27

一个无需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;
  }

}

?>
顶端 Posted: 2006-04-25 16:24 | [楼 主]
micro7556



该用户目前不在线
级别: 新手上路
精华: 0
发帖: 8
威望: 9 点
金钱: 80 PYMB
贡献值: 0 点
在线时间:0(小时)
注册时间:2006-05-22
最后登录:2006-08-28


好复杂
顶端 Posted: 2006-05-22 11:30 | 1 楼
sohotx.com



该用户目前不在线
级别: 新手上路
精华: 0
发帖: 1
威望: 2 点
金钱: 10 PYMB
贡献值: 0 点
在线时间:0(小时)
注册时间:2006-05-28
最后登录:2006-06-14


用了,效果不是很好
顶端 Posted: 2006-05-28 15:50 | 2 楼
PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训 » PHP资源共享

时:11-23 18:52 Copyright © 2006 phpwhy.com 权
ICP05060669

曳息 -