php确认码图片

 确认码生成文件checkNum_session.php
<?
Header ( " Content-type:image/png " );
// 定义header,声明图片文件,最好是png,无版权之扰; 
//生成新的四位整数验证码

session_start (); // 开启session;
$authnum_session   =   ''
$str   =   ' abcdefghijkmnpqrstuvwxyz1234567890 '
// 定义用来显示在图片上的数字和字母;
$l   =   strlen ( $str );  // 得到字串的长度; 
//循环随机抽取四位前面定义的字母和数字; 

for ( $i = 1 ; $i <= 4 ; $i ++ )

$num = rand ( 0 , $l - 1 ); 
// 每次随机抽取一位数字;从第一个字到该字串最大长度,
//减1是因为截取字符是从0开始起算;这样34字符任意都有可能排在其中;

$authnum_session .=   $str [ $num ]; 
// 将通过数字得来的字符连起来一共是四位;
}
session_register ( " authnum_session " );
// 用session来做验证也不错;注册session,名称为authnum_session,
//其它页面只要包含了该图片
//即可以通过$_SESSION["authnum_session"]来调用

//生成验证码图片,

srand (( double ) microtime () * 1000000 );
$im   =  imagecreate( 50 , 20 ); // 图片宽与高; 
//主要用到黑白灰三种色;

$black   =  ImageColorAllocate( $im ,   0 , 0 , 0 );
$white   =  ImageColorAllocate( $im ,   255 , 255 , 255 );
$gray   =  ImageColorAllocate( $im ,   200 , 200 , 200 ); 
// 将四位整数验证码绘入图片
imagefill( $im , 68 , 30 , $gray );
// 如不用干扰线,注释就行了;
$li   =  ImageColorAllocate( $im ,   220 , 220 , 220 );
for ( $i = 0 ; $i < 3 ; $i ++
{
// 加入3条干扰线;也可以不要;视情况而定,因为可能影响用户输入; 
imageline( $im , rand ( 0 , 30 ) , rand ( 0 , 21 ) , rand ( 20 , 40 ) , rand ( 0 , 21 ) , $li );

// 字符在图片的位置;
imagestring( $im ,   5 ,   8 ,   2 ,   $authnum_session ,   $white );
for ( $i = 0 ; $i < 90 ; $i ++ )
{
// 加入干扰象素
imagesetpixel( $im ,   rand () % 70   ,   rand () % 30   ,   $gray );
}
ImagePNG(
$im );
ImageDestroy(
$im );
?>  

确认码调用文件sessionValidate.php
<? php
session_start ();
// 在页首先要开启session,
//error_reporting(2047);

session_destroy ();
// 将session去掉,以每次都能取新的session值;
//用seesion 效果不错,也很方便

?>
< html >
< head >
< title > session 图片验证实例 </ title >
</ head >  
< body >  
此例为session验证实例
< form action = ""  method = " post " >
验证码:
< input type = " text "  name = " validate "  value = ""  size = 10 >   < img src = " checkNum_session.php " >< br >
< input type = " submit " >
</ form >
<? php
// 打印上一个session;
echo   " 上一个session:<b> " . $_SESSION [ " authnum_session " ] . " </b><br> " ;
$validate = "" ;
if ( isset ( $_POST [ " validate " ])){
$validate = $_POST [ " validate " ];
echo   " 您刚才输入的是: " . $_POST [ " validate " ] . " <br>状态: " ;
if ( $validate != $_SESSION [ " authnum_session " ]){
// 判断session值与用户输入的验证码是否一致;
echo   " <font color=red>输入有误</font> "
}
else {
echo   " <font color=green>通过验证</font> "
}

/*
//打印全部session;
PrintArr($_SESSION);
function PrintArr($aArray){
echo '<xmp>';
print_r($aArray);
echo '</xmp>';
}
*/
?>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值