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 相关文章推荐
在Windows中安装Apache2和PHP4的权威指南
Oct 09 PHP
ThinkPHP验证码和分页实例教程
Aug 22 PHP
PHP处理Oracle的CLOB实例
Nov 03 PHP
浅析php单例模式
Nov 25 PHP
php仿微信红包分配算法的实现方法
May 13 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
Nov 14 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 PHP
Yii2.0实现的批量更新及批量插入功能示例
Jan 29 PHP
PHP实现的杨辉三角求解算法分析
Mar 11 PHP
PHP下载大文件失败并限制下载速度的实例代码
May 10 PHP
laravel 获取当前url的别名方法
Oct 11 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基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
PHP二维索引数组的遍历实例分析【2种方式】
2019/06/24 PHP
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
浅析jQuery的链式调用之each函数
2010/12/03 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
在jQuery中 常用的选择器介绍
2013/04/16 Javascript
js渐变显示渐变消失示例代码
2013/08/01 Javascript
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
2017/06/27 Javascript
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
[14:03]2017DOTA2亚洲邀请赛开幕式:12神兵演绎水墨中华
2017/04/01 DOTA
Python实现字典依据value排序
2016/02/24 Python
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
python实现维吉尼亚加密法
2019/03/20 Python
python 获取等间隔的数组实例
2019/07/04 Python
python中struct模块之字节型数据的处理方法
2019/08/27 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
python之随机数函数的实现示例
2020/12/30 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
《手指教学》反思
2014/02/14 职场文书
护士个人自我鉴定
2014/03/24 职场文书
庆祝教师节新闻稿
2015/07/17 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书