首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>php>php基础>正文

使用PHP实现登陆验证码

http://www.oklinux.cn  2003-05-01  来源: 互联网    会员收藏  游客收藏  【 】 

原理:生成一个图片,并且保存图片中显示的字符到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();
}



上一篇:使用PHP实现繁体与简体互转   下一篇:使用php4加速网络传输 


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·使用php4加速网络传输 
·使用PHP实现繁体与简体互转
·使用数据库保存session的方法
·使用PHP4.2.0及以后版本的注意事项
·使用字符串函数输出整数化的PHP版本号
·使用php 4加速web传输
·使用convert函数转换
·适应中文的substr函数
·使用 php4 加速 web 传输   
·树型论坛递归加速
·实现跨域名Cookie
·搜索引擎技术核心揭密(PHP)
·实时抓取YAHOO股票报价的代码
·挑战最棒的留言本的源码(二)
·实例学习PHP之投票程序篇
·挑战最棒的留言本的源码(三)
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·用PHP执行Oracle存储过程示例
·用php做一个简单的表单
·用Socket发送电子邮件(二)
·用Socket发送电子邮件(一)
·用中文命名,让汉字走向程序开发
·在Linux下安装显卡驱动程序
·在PHP中用描点法“绘制”中文
·在线人数统计源代码
·怎么样可以把 phpinfo()屏蔽掉
·则表达式判断email和URL
·正则表达式(regular expression)
·正则表达式使用详解(二)
  阅读排行
·php.ini 中文版
·PHP安装全攻略:常见问题解答
·Linux新手入门常用命令大全
·入门教程:学习使用PHP数组
·利用PHP和CSS改变网页文字大小
·用AJAX实现聊天功能(part 1)
·PHP5学习笔记第二节PHP5的对象模型
·PHP程序编译中常见错误信息分析及解释
·PHP开发中最常见的文件操作疑难解答
·带你走进PHP世界 PHP新手上路之一
·PHPMyVisites安装
·基于PHP的AJAX技术实现文件异步上传
·视频演示:Zend Platform功能特性详解
·ajax的最大缺点是什么?对搜索引擎的支
·关于PHP--session的问题集锦解决方案
网摘收藏: