在登陆时加上验证码,怎么用程序来实现校验呢? 把这个验证码存成session,然后在判断页面判断就可以了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在生成验证码的页面包含一个hidden隐藏变量,然后一起传到下页把用户填写的和生成的比较一下就可以了 开玩笑!"在生成验证码的页面包含一个hidden隐藏变量"这样做不是形同虚设吗? 就是,你一定要记住,特别重要的东西,要保存成session,别用什么hidden,或者cookies,我到一些要密码的网站..他们很多密码都保存在javascript,hidden,cookies,我都能弄来..不用注册..哈哈... <?/* login.php */session_start();?><FORM METHOD=POST ACTION="ii.php"><input type=text name=number maxlength=4><img src="yan.php"><INPUT TYPE="submit" name="sub"></FORM><?if(isset($_POST["sub"])){if($_POST["number"]!=$_SESSION["auth"]||empty($_POST["number"])){ echo "验证码错误" ; unset($_SESSION['auth']);}else{ echo"验证码正确"; unset($_SESSION['auth']);};};?>====================yan.php<?php session_start();srand((double)microtime()*1000000); while(($authnum=rand()%10000)<1000);//生成四位随机整数验证码 $_SESSION['auth']=$authnum;//生成验证码图片 Header("Content-type: image/PNG");$im = imagecreate(50,20); $black = ImageColorAllocate($im, 200,10,0); $white = ImageColorAllocate($im, 255,255,255); $gray = ImageColorAllocate($im, 230,230,230); imagefill($im,68,30,$gray); //将四位整数验证码绘入图片 //位置交错for ($i = 0; $i < strlen($authnum); $i++) { if ($i%2 == 0) $top = 1; else $top = 5; imagestring($im, 5, 10*$i+6, $top, substr($authnum,$i,1), $black); }for($i=0;$i<150;$i++) //加入干扰象素 { imagesetpixel($im, rand()%70 , rand()%30 , $black); } ImagePNG($im); ImageDestroy($im);?> xbm.asp<!--#include file="numcode.asp"--><%Response.Buffer = TrueWith Response .Expires = -1 .AddHeader "Pragma","no-cache" .AddHeader "cache-ctrol","no-cache"End WithDim numRandomizenum = Int(7999 * Rnd + 2000)Session("validateCode") = numDim ImageDim Width, HeightDim digtalDim LengthDim sortDim hcLength = 4 hc = chr(13) & chr(10)Redim sort(Length)digital = ""For I = 1 To Length - Len(num) digital = digital & "0"NextFor I = 1 To Len(num) digital = digital & Mid(num, I, 1)NextFor I = 1 To Len(digital) sort(I) = Mid(digital, I, 1)NextWidth = 8 * Len(digital)Height = 10Response.ContentType = "image/x-xbitmap"Image = "#define counter_width " & Width & hcImage = Image & "#define counter_height " & Height & hcImage = Image & "static unsigned char counter_bits[] = {" & hcFor I = 1 To Height For J = 1 To Length Image = Image & a(sort(J),I) & "," NextNextImage = Left(Image, Len(Image) - 1)Image = Image & "};" & hcResponse.Write Image%>numcode.asp<%Dim a(10,10)a(0,1) = "0x3c" '数字0a(0,2) = "0x66"a(0,3) = "0xc3"a(0,4) = "0xc3"a(0,5) = "0xc3"a(0,6) = "0xc3"a(0,7) = "0xc3"a(0,8) = "0xc3"a(0,9) = "0x66"a(0,10)= "0x3c"a(1,1) = "0x18" '数字1a(1,2) = "0x1c"a(1,3) = "0x18"a(1,4) = "0x18"a(1,5) = "0x18"a(1,6) = "0x18"a(1,7) = "0x18"a(1,8) = "0x18"a(1,9) = "0x18"a(0,10)= "0x7e"a(2,1) = "0x3c" '数字2a(2,2) = "0x66"a(2,3) = "0x60"a(2,4) = "0x60"a(2,5) = "0x30"a(2,6) = "0x18"a(2,7) = "0x0c"a(2,8) = "0x06"a(2,9) = "0x06"a(2,10)= "0x7e"a(3,1) = "0x3c" '数字3a(3,2) = "0x66"a(3,3) = "0xc0"a(3,4) = "0x60"a(3,5) = "0x1c"a(3,6) = "0x60"a(3,7) = "0xc0"a(3,8) = "0xc0"a(3,9) = "0x66"a(3,10)= "0x38"a(4,1) = "0x38" '数字4a(4,2) = "0x3c"a(4,3) = "0x36"a(4,4) = "0x33"a(4,5) = "0x33"a(4,6) = "0x33"a(4,7) = "0xff"a(4,8) = "0x30"a(4,9) = "0x30"a(4,10)= "0xfe"a(5,1) = "0xfe" '数字5a(5,2) = "0xfe"a(5,3) = "0x06"a(5,4) = "0x06"a(5,5) = "0x3e"a(5,6) = "0x60"a(5,7) = "0xc0"a(5,8) = "0xc3"a(5,9) = "0x66"a(5,10)= "0x3c"a(6,1) = "0x60" '数字6a(6,2) = "0x30"a(6,3) = "0x18"a(6,4) = "0x0c"a(6,5) = "0x3e"a(6,6) = "0x63"a(6,7) = "0xc3"a(6,8) = "0xc3"a(6,9) = "0x66"a(6,10) ="0x3c"a(7,1) = "0xff" '数字7a(7,2) = "0xc0"a(7,3) = "0x60"a(7,4) = "0x30"a(7,5) = "0x18"a(7,6) = "0x18"a(7,7) = "0x18"a(7,8) = "0x18"a(7,9) = "0x18"a(7,10)= "0x18"a(8,1) = "0x3c" '数字8a(8,2) = "0x66"a(8,3) = "0xc3"a(8,4) = "0x66"a(8,5) = "0x3c"a(8,6) = "0x66"a(8,7) = "0xc3"a(8,8) = "0xc3"a(8,9) = "0x66"a(8,10)= "0x3c"a(9,1) = "0x3c" '数字9a(9,2) = "0x66"a(9,3) = "0xc3"a(9,4) = "0xc3"a(9,5) = "0x66"a(9,6) = "0x3c"a(9,7) = "0x18"a(9,8) = "0x0c"a(9,9) = "0x06"a(9,10)= "0x03"%> 我想用session 是再适合不过了,session_is_register("$dd"); TO:zhaobohao(中文字符)不用注册就能把密码弄过来????怎么弄啊???!!!! <?phpwhile( $randomed < 4096 || $randomed > 65535 ){ srand ( ( double ) microtime ( ) * 1000000 ); $randval = rand ( ); $randomed = 一个INT型 ^ $randval;}print ( "附加码: <img src=\"png.php?random=".$randomed."\" align=\"bottom\">" );print ( "<input name=\"adcode\" type=\"hidden\" value=".$randval.">" );?>//--------png.php---------<?$random = dechex ( $_GET['random'] );for ( $i = 0; $i < strlen ( $random ); $i ++ ){ srand ( ( double ) microtime ( ) * 1000000 ); $randval2 = rand(); $randval2 %= 4; imagestring ( $Image, 5, 10 + $i * 20, $randval2, $random[ $i ], $black );}ImagePNG ( $Image );ImageDestroy( $Image );?>//--check程序if ( ( hexdec ( $g_user[aid] ) ^ $g_user[adcode] ) != 上面那个INT型 ){ //附加码错误} PHP页面提交不了表单,点击提交无显现是怎么回事呀? 这个很菜的问题,没有解决, limit 疑问 [求助]关于Serialize()这个函数的使用 在WAMP环境下安装PDO组件不能....求助 使用PHP如何从MSSQL中读取到数据库的信息? mai()函数的奇怪问题不知道大家碰到过没有 动态表单提交 公布:明天提供EBB论坛2.0下载. 谁给我个“规则表达式” 详细说明啊/??????? phpMyAdmin的问题 怎么才能让滚动条自动跳到最上面?这样的代码怎么写?
把用户填写的和生成的比较一下就可以了
/* login.php */
session_start();
?>
<FORM METHOD=POST ACTION="ii.php">
<input type=text name=number maxlength=4><img src="yan.php">
<INPUT TYPE="submit" name="sub">
</FORM><?
if(isset($_POST["sub"])){
if($_POST["number"]!=$_SESSION["auth"]||empty($_POST["number"])){
echo "验证码错误" ;
unset($_SESSION['auth']);
}else{
echo"验证码正确";
unset($_SESSION['auth']);
};
};
?>
====================
yan.php
<?php
session_start();
srand((double)microtime()*1000000); while(($authnum=rand()%10000)<1000);//生成四位随机整数验证码
$_SESSION['auth']=$authnum;//生成验证码图片
Header("Content-type: image/PNG");
$im = imagecreate(50,20);
$black = ImageColorAllocate($im, 200,10,0);
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 230,230,230);
imagefill($im,68,30,$gray); //将四位整数验证码绘入图片
//位置交错
for ($i = 0; $i < strlen($authnum); $i++) {
if ($i%2 == 0) $top = 1;
else $top = 5;
imagestring($im, 5, 10*$i+6, $top, substr($authnum,$i,1), $black);
}for($i=0;$i<150;$i++) //加入干扰象素
{
imagesetpixel($im, rand()%70 , rand()%30 , $black);
} ImagePNG($im);
ImageDestroy($im);?>
<%
Response.Buffer = True
With Response
.Expires = -1
.AddHeader "Pragma","no-cache"
.AddHeader "cache-ctrol","no-cache"
End WithDim num
Randomize
num = Int(7999 * Rnd + 2000)
Session("validateCode") = numDim Image
Dim Width, Height
Dim digtal
Dim Length
Dim sort
Dim hc
Length = 4
hc = chr(13) & chr(10)Redim sort(Length)digital = ""
For I = 1 To Length - Len(num)
digital = digital & "0"
Next
For I = 1 To Len(num)
digital = digital & Mid(num, I, 1)
Next
For I = 1 To Len(digital)
sort(I) = Mid(digital, I, 1)
Next
Width = 8 * Len(digital)
Height = 10Response.ContentType = "image/x-xbitmap"Image = "#define counter_width " & Width & hc
Image = Image & "#define counter_height " & Height & hc
Image = Image & "static unsigned char counter_bits[] = {" & hcFor I = 1 To Height
For J = 1 To Length
Image = Image & a(sort(J),I) & ","
Next
NextImage = Left(Image, Len(Image) - 1)
Image = Image & "};" & hcResponse.Write Image
%>numcode.asp
<%
Dim a(10,10)a(0,1) = "0x3c" '数字0
a(0,2) = "0x66"
a(0,3) = "0xc3"
a(0,4) = "0xc3"
a(0,5) = "0xc3"
a(0,6) = "0xc3"
a(0,7) = "0xc3"
a(0,8) = "0xc3"
a(0,9) = "0x66"
a(0,10)= "0x3c"a(1,1) = "0x18" '数字1
a(1,2) = "0x1c"
a(1,3) = "0x18"
a(1,4) = "0x18"
a(1,5) = "0x18"
a(1,6) = "0x18"
a(1,7) = "0x18"
a(1,8) = "0x18"
a(1,9) = "0x18"
a(0,10)= "0x7e"a(2,1) = "0x3c" '数字2
a(2,2) = "0x66"
a(2,3) = "0x60"
a(2,4) = "0x60"
a(2,5) = "0x30"
a(2,6) = "0x18"
a(2,7) = "0x0c"
a(2,8) = "0x06"
a(2,9) = "0x06"
a(2,10)= "0x7e"a(3,1) = "0x3c" '数字3
a(3,2) = "0x66"
a(3,3) = "0xc0"
a(3,4) = "0x60"
a(3,5) = "0x1c"
a(3,6) = "0x60"
a(3,7) = "0xc0"
a(3,8) = "0xc0"
a(3,9) = "0x66"
a(3,10)= "0x38"a(4,1) = "0x38" '数字4
a(4,2) = "0x3c"
a(4,3) = "0x36"
a(4,4) = "0x33"
a(4,5) = "0x33"
a(4,6) = "0x33"
a(4,7) = "0xff"
a(4,8) = "0x30"
a(4,9) = "0x30"
a(4,10)= "0xfe"a(5,1) = "0xfe" '数字5
a(5,2) = "0xfe"
a(5,3) = "0x06"
a(5,4) = "0x06"
a(5,5) = "0x3e"
a(5,6) = "0x60"
a(5,7) = "0xc0"
a(5,8) = "0xc3"
a(5,9) = "0x66"
a(5,10)= "0x3c"a(6,1) = "0x60" '数字6
a(6,2) = "0x30"
a(6,3) = "0x18"
a(6,4) = "0x0c"
a(6,5) = "0x3e"
a(6,6) = "0x63"
a(6,7) = "0xc3"
a(6,8) = "0xc3"
a(6,9) = "0x66"
a(6,10) ="0x3c"a(7,1) = "0xff" '数字7
a(7,2) = "0xc0"
a(7,3) = "0x60"
a(7,4) = "0x30"
a(7,5) = "0x18"
a(7,6) = "0x18"
a(7,7) = "0x18"
a(7,8) = "0x18"
a(7,9) = "0x18"
a(7,10)= "0x18"a(8,1) = "0x3c" '数字8
a(8,2) = "0x66"
a(8,3) = "0xc3"
a(8,4) = "0x66"
a(8,5) = "0x3c"
a(8,6) = "0x66"
a(8,7) = "0xc3"
a(8,8) = "0xc3"
a(8,9) = "0x66"
a(8,10)= "0x3c"a(9,1) = "0x3c" '数字9
a(9,2) = "0x66"
a(9,3) = "0xc3"
a(9,4) = "0xc3"
a(9,5) = "0x66"
a(9,6) = "0x3c"
a(9,7) = "0x18"
a(9,8) = "0x0c"
a(9,9) = "0x06"
a(9,10)= "0x03"
%>
session_is_register("$dd");
不用注册就能把密码弄过来????怎么弄啊???!!!!
while( $randomed < 4096 || $randomed > 65535 )
{
srand ( ( double ) microtime ( ) * 1000000 );
$randval = rand ( );
$randomed = 一个INT型 ^ $randval;
}
print ( "附加码: <img src=\"png.php?random=".$randomed."\" align=\"bottom\">" );
print ( "<input name=\"adcode\" type=\"hidden\" value=".$randval.">" );
?>
//--------png.php---------
<?
$random = dechex ( $_GET['random'] );
for ( $i = 0; $i < strlen ( $random ); $i ++ )
{
srand ( ( double ) microtime ( ) * 1000000 );
$randval2 = rand();
$randval2 %= 4;
imagestring ( $Image, 5, 10 + $i * 20, $randval2, $random[ $i ], $black );
}
ImagePNG ( $Image );
ImageDestroy( $Image );
?>
//--check程序
if ( ( hexdec ( $g_user[aid] ) ^ $g_user[adcode] ) != 上面那个INT型 )
{
//附加码错误
}