html如何引用php验证码,php 验证码实现范例 smarty html

因为是菜鸟所以搞了两个半天才搞定,虽然不尽如人意,但也还凑合-差强人意 O(∩_∩)O~

案情:做一个简单的登录界面,要求有验证码,使用smarty,当验证码不一致时在登录界面提示“验证码错误,请重新输入!”

在网上找了一个php生成验证码的代码:image.php;

image.php代码如下:

//checkNum.php

session_start();

function random($len)

{

$srcstr="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

mt_srand();//配置乱数种子

$strs="";

for($i=0;$i

$strs.=$srcstr[mt_rand(0,35)];

}

return strtoupper($strs);

}

$str=random(4); //随机生成的字符串

$width = 100; //验证码图片的宽度

$height = 25; //验证码图片的高度

@header("Content-Type:image/png");

$_SESSION["ses_vcode"] = $str;

//echo $str;

$im=imagecreate($width,$height);

//背景色

$back=imagecolorallocate($im,0xFF,0xFF,0xFF);

//模糊点颜色

$pix=imagecolorallocate($im,187,230,247);

//字体色

$font=imagecolorallocate($im,41,163,238);

//绘模糊作用的点

mt_srand();

for($i=0;$i <1000;$i++)

{

imagesetpixel($im,mt_rand(0,$width),mt_rand(0,$height),$pix);

}

imagestring($im, 5, 7, 5,$str, $font);

imagerectangle($im,0,0,$width-1,$height-1,$font);

imagepng($im);

imagedestroy($im);

$_SESSION["ses_vcode"] = $str;

//session_destroy();

?>

代码最后有session_destroy();本人将其注释,否则$_SESSION["ses_vcode"] 值取不到。

在模板页index.tpl引入验证码:

image.php

一开始打算把image.php生成的验证码值$_SESSION["ses_vcode"]取出传到index.tpl里面

搞了半天也没有成功,网上说用value= $var ?>方法,但不知道为啥,smarty实现不了。

最后还是使用了页面跳转header()函数。到另一个页面里面判断,如果验证码不一致就转到登录界面,效果是一样的。

实现方法:

点击登录的时候,页面转到welcome.php:

--welcome.php代码--

date_default_timezone_set('Asia/Shanghai');

session_start();

require('./libs/Smarty.class.php');

$smarty = new Smarty;

$name=$_REQUEST["name"];

$code=$_REQUEST["code"];

$vcode=$_REQUEST["vcode"];

$ses_vcode=$_SESSION["ses_vcode"];

//echo $_SESSION["ses_vcode"];

if(strtolower($vcode)==strtolower($ses_vcode))

{

session_destroy();

echo "登录成功:$ses_vcode : $vcode";

}

else

{

$_SESSION["error"]=1;

header("Location: index.php");

}

……

?>

说明:就是判断如果不一致的话,就将$_SESSION["error"]赋值为1然后跳转到登录界面

-----index.php代码:--------

date_default_timezone_set('Asia/Shanghai');

session_start();

require('./libs/Smarty.class.php');

$vcwr="";

$color="#000033";

if(isset($_SESSION["error"]))

{

$color="#cddeff";

$vcwr="验证码错误,请重新输入!";

session_destroy();

}

…………

?>

说明

1.在登陆页 先判断是否有session['error'],有则显示,然后清除 session['error']。

2.welcome.php判断验证码与输入是否一致,不一致时存session['error']并赋值为1,然后跳转到index.php页面;

如果index.php里面不加session_destroy(),刷新页面时验证码错误就会一直显示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值