http://blog.sina.com.cn/s/blog_8173443e01012l82.html

记得我学php时第一件事就是研究登陆注册。当然,登陆少不了验证码。两年过去了,昨天突然想用个验证码却找不到代码了,现在找到了,贴出来吧。防止我这个马大哈再找不到。随机生成四位数字符串,可以是数字也可以是数字和字母。

authimg.php生成验证码的文件:
<?

$IsLetter = false; //是否出现字母
 session_start();
 $Num  = $_GET["n"];
 
 //生成验证码图片
 header("Content-type: image/PNG");
 $im   = imagecreate(46,20);
 srand((double)microtime()*1000000);
 $Red  = rand(0,200);
 $Green  = rand(0,200);
 $Blue  = rand(0,200);
 $Color  = imagecolorallocate($im, $Red, $Green, $Blue);
 $BackGround = imagecolorallocate($im, 255,255,255);
 imagefill($im,0,0,$BackGround);
 
 if($IsLetter)
 {
  $a = substr(md5($Num*10000000000000000),0,1);
  $b = substr(md5($Num*10000000000000000),4,1);
  $c = substr(md5($Num*10000000000000000),8,1);
  $d = substr(md5($Num*10000000000000000),12,1);
 }
 else
 {
  $a = substr(hexdec(md5($Num*10000000000000000)),2,1);
  $b = substr(hexdec(md5($Num*10000000000000000)),3,1);
  $c = substr(hexdec(md5($Num*10000000000000000)),4,1);
  $d = substr(hexdec(md5($Num*10000000000000000)),5,1);
 }
 
 $Authnum    = strtoupper($a.$b.$c.$d);
 
 $_SESSION["Authnum"] = $Authnum;
 
 imagestring($im, 5, 5, 2, $Authnum, $Color);
 for($i=0;$i<200;$i++)   //加入干扰象素
 {
     $randcolor = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
     imagesetpixel($im, rand()p , rand()0 , $randcolor);
 }
 imagepng($im);
 imagedestroy($im);
?>

需要显示验证码的文件:

<?
session_start();

$AuthInput = $_POST["AuthInput"];
$action = $_GET["action"];
?>
<script language="javascript">
function lyalert(){
if( addform.AuthInput.value=="") {
alert("请填写验证码");
document.addform.AuthInput.focus();
return false;

}
</script>
<form name="addform" method="post" action="?action=save" id="addform" onsubmit="return lyalert()">
<table width="500" border="1" cellpadding="5" cellspacing="0">
<tr><td>验证码:</td>
<td><input name="AuthInput" type="text" id="AuthInput"  size="8" maxlength="4" /><script>document.write("<img src=\"authimg.php?n=",Math.random(),"\" />");</script></td></tr>
<tr><td colspan="2" align="center"><input type="submit" name="Button1" value="确定" id="Button1" /></td>
</tr>
</table>
<p>&nbsp;</p>
</form>
  
<?
if($action=='save')
{
if ($_SESSION["Authnum"] != $AuthInput)
{
?>
<script language="javascript">
alert("验证码输入不正确");
</script>
<? 
}
else
{
 ?>  
<script language="javascript">
 alert("提交成功!");
</script>
<?
 
 
 

}
?>

php注册登录时生成的验证码的更多相关文章

  1. python配合Fiddler获取windows app登录时生成cookie实例

    工具Fiddler/python3 打开Fiddler,清空一下Fidder里面的请求记录 打开app,进行登录,注意Fiddler里的请求变化 在弹出app登录的时候Fiddler里已经有了四个请求 ...

  2. Linux下部署SSH登录时的二次身份验证环境记录(利用Google Authenticator)

    一般来说,使用ssh远程登录服务器,只需要输入账号和密码,显然这种方式不是很安全.为了安全着想,可以使用GoogleAuthenticator(谷歌身份验证器),以便在账号和密码之间再增加一个验证码, ...

  3. 【原创】基于phpGrace+uniApp开发之:5.登录界面增加图片验证码

    1.目的: 采用phpGrace中的图片验证码,在用户名+密码登录时使用图片验证码进行验证. 2.文档地址: 图片验证码的文档地址:http://www.phpgrace.com/tools/info ...

  4. Maven + SSM + Kaptcha 实现用户登录时验证码的获取(问题:302 Found)

    pom.xml(对Kaptcha.jar的引用) <!-- 验证码 jar kaptcha--> <dependency> <groupId>com.github. ...

  5. shiro 和spring集合 实现登录时输入验证码并校验(七)

    编写实现验证码的主体实现类:CaptchaCode import java.util.UUID; import javax.servlet.http.HttpServletRequest; impor ...

  6. 第一百八十七节,jQuery,知问前端--cookie 插件,注册成功后生成cookie,显示登录状态

    jQuery,知问前端--cookie 插件 学习要点: 1.使用 cookie 插件 2.注册直接登录 Cookie 是网站用来在客户端保存识别用户的一种小文件.一般来用库可以保存用户登 录信息.购 ...

  7. nodejs:注册登录session出错以及连接Mongodb数据库时Error connecting to database解决方案

    (1)nodejs:注册登录session出错 解决办法: 在app.js 中将var MongoStore =  require(connect-mongo')改为var MongoStore =  ...

  8. Spingmvc项目注册登录图片验证码(比较灵活的验证码)

    最近项目中注册模块要加一个图片验证码功能. 写下来记录下. 1:首先用什么实现,我用的servlet. 后台java代码:RandomValidateCode 类 ,这个类是生成随即验证码和干扰线,可 ...

  9. 一步步开发自己的博客 .NET版(3、注册登录功能)

    前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做 ...

随机推荐

  1. FastCGI技术

    1         FastCGI介绍 FastCGI:快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议.    ...

  2. [Andrew]Grid列编辑实现

    Html.X().GridPanel()                .Plugins(Html.X().CellEditing())                .Listeners(l =&g ...

  3. Appium 小白从零安装 ,Appium连接真机测试。

    以下是我个人在初次安装使用Appium时的过程,过程中遇到了一些问题,在这里也一一给出解决办法. Appium安装过程 先安装了 Node.js.在node的官网上下载的exe安装文件. 在node的 ...

  4. 解决 EF 分层查询的一个性能问题[转]

    前两年帮朋友 做了个网吧管理软件,采用动软的三层架构 sql语句生成的.最近因功能变更 要改动,而我这段正在做asp.net mvc +ef+autofac的一个电商网站.索性 就把原来的底层全重新了 ...

  5. seg格式文件的分析

    s ,r, c1, c2   第r行的c1列到 c2列的值为s

  6. 洛谷P1189 逃跑的拉尔夫(SEARCH)

    洛谷1189 SEARCH 题目描述 年轻的拉尔夫开玩笑地从一个小镇上偷走了一辆车,但他没想到的是那辆车属于警察局,并且车上装有用于发射车子移动路线的装置. 那个装置太旧了,以至于只能发射关于那辆车的 ...

  7. Spark在集群中的安装

    今天由于所以要安装spark做一些实验.我已有的环境是: 操作系统:CentOS6.5 hadoop:hadoop2.4.1 JDK:1.7 集群环境:四个节点   闲话不说,以下是我的安装步骤: 说 ...

  8. Oracle ABP(Autotask Background Process)

    ABP相当于自动任务与调度程序之间的中介,其主要作用是将自动任务转换成Autotask作业,供调度程序执行.同样重要的是,ABP还维护所有任务执行的历史记录.ABP将其专用资料档案库存储在sysaux ...

  9. EGOImageView的使用方法及注意事项

    1.下载EGOImageView及其相关的类库 EGOImageLoading 将EGOCache.EGOImageButton.EGOImageView.EGOImageLoader全部添加到工程下 ...

  10. 恼人的Visual Studio 2010崩溃重启问题

    上周时Visual Studio 2010突然出现崩溃现象.在源文件修改只要一编译,马上就崩溃,而且还不弹出任何异常窗口,严重影响软件开发工作. google了无数解决方案 试了下面这些方法: 1)h ...