PHP 验证码的实现代码


Posted in PHP onJuly 17, 2011

checkcode.php 生成验证码图片,还有变量 $_SESSION[check_pic]。

<? 
session_start(); 
for($i=0; $i<4; $i++){ 
$rand.= dechex(rand(1,15)); 
} 
$_SESSION[check_pic]=$rand; 
//echo $_SESSION[check_pic]; 
// 设置图片大小 
$im = imagecreatetruecolor(100,30); 
// 设置颜色 
$bg=imagecolorallocate($im,0,0,0); 
$te=imagecolorallocate($im,255,255,255); 
// 把字符串写在图像左上角 
imagestring($im,rand(5,6),rand(25,30),5,$rand,$te); 
// 输出图像 
header("Content-type:image/jpeg"); 
imagejpeg($im); 
?>

form.php
通过 <img src="checkcode.php"> 调用生成的验证码图片
<div class="bottomAds"> 
<fieldset class="bottomAds_quote"><legend>留言</legend> 
<div class="ads"> 
<form action="../utity/post.php" method="post" onsubmit="return chkinput(this)"> 
<input name="name" type="text" /> 您的名字 
<input name="email" type="text" /> 您的邮件 
<input name="website" type="text" /> 您的网站 
<textarea name="content" style="width:340; height:150;"> 
</textarea><br /> 
<img src="checkcode.php"><input type="text" name="check"><br /> 
<input type="submit" value="提交" /> 
</form> 
</div> 
<br clear="both" /> 
</fieldset>

imagestring($im,rand(5,6),rand(25,30),5,$rand,$te); 使用了 int imagestring(int im, int font, int x, int y, string s, int col); 函数,这个函数用于绘横式字符串。
这个函数在图片上绘出水平的横式字符串。参数 font 为字形,设为 1 到 5 表示使用默认字形。参数 x、y 为字符串起点坐标。字符串的内容放在参数 s 上。参数 col 表示字符串的颜色。
post.php
比较 $_POST[check] 与 $_SESSION[check_pic],若相等则执行数据库插入操作。不相等就返回上一页。
<?php 
session_start(); 
if(isset($_POST[check])) 
{ 
if($_POST[check] == $_SESSION[check_pic]) 
{ 
// echo "验证码正确".$_SESSION[check_pic]; 
require("dbinfo.php"); 
$name = $_POST['name']; 
$email = $_POST['email']; 
$website = $_POST['website']; 
$content = $_POST['content']; 
$date = date("Y-m-d h:m:s"); 
// 连接到 MySQL 服务器 
$connection = mysql_connect ($host, $username, $password); 
if (!$connection) 
{ 
die('Not connected : ' . mysql_error()); 
} 
// 设置活动的 MySQL 数据库 
$db_selected = mysql_select_db($database, $connection); 
if (!$db_selected) 
{ 
die ('Can\'t use db : ' . mysql_error()); 
} 
// 向数据库插入数据 
$query = "insert into table (nowamagic_name, nowamagic_email, nowamagic_website, nowamagic_content, nowamagic_date) values ('$name','$email','$website','$content','$date')"; 
$result = mysql_query($query); 
if($result) 
{ 
echo "<script>alert('提交成功'); history.go(-1);</script>"; 
} 
if (!$result) 
{ 
die('Invalid query: ' . mysql_error()); 
} 
} 
else 
{ 
echo "<script>alert('验证码错误'); history.go(-1);</script>"; 
} 
} 
?>
PHP 相关文章推荐
用PHP实现的生成静态HTML速度快类库
Mar 31 PHP
PHP防CC攻击实现代码
Dec 29 PHP
PHP插入排序实现代码
Apr 04 PHP
hadoop中一些常用的命令介绍
Jun 19 PHP
phpmailer中文乱码问题的解决方法
Apr 22 PHP
PHP获取Exif缩略图的方法
Jul 13 PHP
twig模板获取全局变量的方法
Feb 05 PHP
Zend Framework教程之Zend_Config_Ini用法分析
Mar 23 PHP
ThinkPHP删除栏目(实现批量删除栏目)
Jun 21 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
Mar 07 PHP
laravel执行php artisan migrate报错的解决方法
Oct 09 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
Oct 24 PHP
PHP中用hash实现的数组
Jul 17 #PHP
PHP中文分词的简单实现代码分享
Jul 17 #PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
Jul 17 #PHP
从手册去理解分析PHP session机制
Jul 17 #PHP
php数组的一些常见操作汇总
Jul 17 #PHP
PHP在特殊字符前加斜杠的实现代码
Jul 17 #PHP
PHP的explode和implode的使用说明
Jul 17 #PHP
You might like
谈谈PHP语法(4)
2006/10/09 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
模拟select的代码
2011/10/19 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
js实现单行文本向上滚动效果实例代码
2013/11/28 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
基于jQuery Tipso插件实现消息提示框特效
2016/03/16 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
2018/03/26 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
vue 在单页面应用里使用二级套嵌路由
2020/12/19 Vue.js
JavaScript实现雪花飘落效果
2020/12/27 Javascript
[02:16]卖萌的僵尸 DOTA2神话信使飞僵小宝来袭
2014/03/24 DOTA
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
Python简单获取自身外网IP的方法
2016/09/18 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
django query模块
2019/04/20 Python
python文件选择对话框的操作方法
2019/06/27 Python
利用python求积分的实例
2019/07/03 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
python 实现rolling和apply函数的向下取值操作
2020/06/08 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
基于CSS3实现的黑色个性导航菜单效果
2015/09/14 HTML / CSS
HTML5离线应用与客户端存储的实现
2018/05/03 HTML / CSS
水果花束:Fruit Bouquets
2017/12/20 全球购物
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python