验证码是表单验证的一种重要形式,是当前许多表单3图片验证码两种实现方式的原理
服务器验证方式
行讨论,并且结合图片验证码的实现,分别对其在服务器端用户在进入登陆页时(index.aSp),页面程序按照一定实现和客户端的实现进行详细的分析。算法生成一组数据,并存储到Sesssion变量中以便提交后
验证码的作用验证比较,然后编成合理的HTML字符串用Response.Write
(1)防止使用特定破解程序进行不断的非法登陆尝试写入,形成页面显示的与Sesssion变量数据对应的图片排,如:发送垃圾邮件或通过同时反复登录多个帐户延缓、阻列,即:图片验证码。
塞甚至使某个Web应用崩溃。用户提交页面后,交与后台验证程序(check-asp)并与
(2)防止非法批量注册,生成大量垃圾帐户。存储的Sesssion变量进行验证比较,成功和失败分别进行(3)防止利用机器人非法向BBS等Web应用灌水,提不同处理和引导。
交垃圾数据。3.2客户端验证方式
(4)培养用户谨慎、负责的操作态度。该验证方式在网页提交到后台之前通过客户端脚本验
证。生成验证码图片与上面的方法相同,但不在服务器端存。
以下为引用的内容:
<?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=http://edu.136z.com/developer/checkNumber.php?act=init>在登陆校验PHP页面中加入以下代码(注意:在加入代码前不能有输出,因为使用了SESSION)
//$number 是你输入的校验码的值
include_once("./http://edu.136z.com/developer/checkNumber.php");
//检验校验码
if($number != $login_check_number || empty($number))
{
print("校验码不正确!");
die();
}
*/
?>
使用SESSION的问题:
如果打开登陆页在SESSION的失效后才进行登陆,那么登陆会失败。 中国站长_站,为中文网站提供动力
使用COOKIE的问题:
COOKIE是保存在客户端的,所以如果使用COOKIE的话还不如不用。
针对VBB论坛。保存http://edu.136z.com/developer/checkNumber.php后。修改MYSQL数据库template数据表的title 为 logincode forumhome_logincode username_loggedout的template 内容。
然后在member.php的
if ($action=="login")
后加入
以下为引用的内容:
//检验校验码
include_once("./http://edu.136z.com/developer/checkNumber.php");
if($number != $login_check_number || $number == "")
{
print("校验码不正确!");
die();
}
以下为引用的内容:
//*****************************************************************
// *.php 使用文件,看清楚了,怎么使用在这里
//
//*****************************************************************
<?php
//require (FILE_DIR."smtp.php");
$smtpserver = "smtp.163.com";//SMTP服务器
$smtpserverport =25;//SMTP服务器端口
$smtpusermail = "webjx@163.com";//SMTP服务器的用户邮箱
$smtpemailto = "webjx@163.com";//发送给谁
$smtpuser = "webjx";//SMTP服务器的用户帐号
$smtppass = "webjx";//SMTP服务器的用户密码
$mailsubject = "Test Subject";//邮件主题
$mailbody = "<h1>This is a test mail</h1>";//邮件内容
$mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件
$smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证.
$smtp->debug = TRUE;//是否显示发送的调试信息
$smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype);