php 验证码实现范例 smarty html
来源:互联网 发布:java布局管理器嵌套 编辑:程序博客网 时间:2024/05/27 20:52
因为是菜鸟所以搞了两个半天才搞定,虽然不尽如人意,但也还凑合-差强人意 O(∩_∩)O~
案情:做一个简单的登录界面,要求有验证码,使用smarty,当验证码不一致时在登录界面提示“验证码错误,请重新输入!”
在网上找了一个php生成验证码的代码:image.php;
image.php代码如下:
<?php
//checkNum.php
session_start();
function random($len)
{
$srcstr="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
mt_srand();//配置乱数种子
$strs="";
for($i=0;$i <$len;$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引入验证码:
<img src="image.php" >
一开始打算把image.php生成的验证码值$_SESSION["ses_vcode"] 取出传到index.tpl里面
搞了半天也没有成功,网上说用value=<? $var ?>方法,但不知道为啥,smarty实现不了。
最后还是使用了页面跳转header()函数。到另一个页面里面判断,如果验证码不一致就转到登录界面,效果是一样的。
实现方法:
点击登录的时候,页面转到welcome.php:
--welcome.php代码--
<?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代码:--------
<?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(),刷新页面时验证码错误就会一直显示
- php 验证码实现范例 smarty html
- php与html结合实现验证码
- 【PHP+SMARTY】提取ecshop验证码
- php token验证范例
- PHP 中运用Smarty 实现HTML静态化
- HTML实现验证码
- PHP中如何配置smarty框架实现PHP代码和HTML代码分离
- php实现验证码
- PHP实现验证码
- PHP实现验证码
- PHP实现验证码
- php实现验证码
- php实现验证码
- PHP实现验证码
- PHP---验证码实现
- php验证码实现
- 【PHP】验证码实现
- php实现验证码
- C# 格式化字符串,日期,时间,货币
- Spring中Quartz的配置
- PHP5.2的配置文件php.ini中文版
- Swing
- 贴出我的原创 无限分类C#版 源代码二
- php 验证码实现范例 smarty html
- LINUX 使用tcgetattr函数与tcsetattr函数控制终端
- 使用JDBC插入数据到ORACLE,使用标识列自增列。
- 在Linux创建库函数【转自www.bitsCN.com】
- Linux下基于LVS的集群原理及配置方法(1)
- JMS基础知识整理(转)
- 贴出我的原创 无限分类C#版 源代码三
- JQuery 实例之 伸缩的菜单
- Quartz 在 Spring 中如何动态配置时间