动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   PHP → 阅读文章

 使用PHP实现登陆验证码

作者来源: 
阅读 1738 人次 , 2006-3-29 4:08:00 


原理:生成一个图片,并且保存图片中显示的字符到session.在登陆时判断输入的校验码是否和session中校验码相同.
演示地址:

http://www.bingdu.net/bbs/

这是生成校验码和图片的文件checknumber.php

<?php
session_start();

if($act == "init")
{
header("content-type: image/png");
srand(microtime() * 100000);
$login_check_number = strval(rand("1111","9999"));

session_register("login_check_number");
//这里是使用了session来保存校验码.
//当然也可以用cookie
//setcookie("login_check_number",$login_check_number);
//然后将第一行的session_start()删除;
//不推荐使用cookie,因为使用cookie并不能进行安全的验证.

$h_img = imagecreate(40,17);
$c_black = imagecolorallocate($h_img, 0,0,0);
$c_white = imagecolorallocate($h_img, 255,255,255);
imageline($h_img, 1, 1, 350, 25, $c_black);
imagearc($h_img, 200, 15, 20, 20, 35, 190, $c_white);
imagestring($h_img, 5, 2, 1, $login_check_number, $c_white);
imagepng($h_img);
imagedestroy($h_img);

die();
}
/*
使用方法:
在html文件中加入<input type=text name=number maxlength=4><img src=checknumber.php?act=init>

在登陆校验php页面中加入以下代码(注意:在加入代码前不能有输出,因为使用了session)

//$number 是你输入的校验码的值

include_once("./checknumber.php");

//检验校验码

if($number != $login_check_number || empty($number))
{
print("校验码不正确!");
die();
}
*/
?>

使用session的问题:
如果打开登陆页在session的失效后才进行登陆,那么登陆会失败.
使用cookie的问题:
cookie是保存在客户端的,所以如果使用cookie的话还不如不用.

针对vbb论坛.保存checknumber.php后.修改mysql数据库template数据表的title 为 logincode forumhome_logincode username_loggedout的template 内容.
然后在member.php的
if ($action=="login")
后加入

//检验校验码
include_once("./checknumber.php");
if($number != $login_check_number || $number == "")
{
print("校验码不正确!");
die();
}

 本文Tags验证码  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:用PHP解析XSL
· 下一篇:PHP数据加密
· PHP拥有序列化方法
· 浅谈Windows下 PHP4.0与oracle 8的连接设置
· 用PHP调用数据库的存贮过程
· PHP 编码规范(9)
· Output Buffer (输出缓冲)函数的妙用


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077