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面向对象全攻略 (二) 实例化对象 使用对象成员
Sep 30 PHP
PHP+XML 制作简单的留言本 图文教程
Nov 02 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
Apr 24 PHP
Discuz!X中SESSION机制实例详解
Sep 23 PHP
PHP生成和获取XML格式数据的方法
Mar 04 PHP
php实现在站点里面添加邮件发送的功能
Apr 28 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
May 31 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
php获取远程图片并下载保存到本地的方法分析
Oct 08 PHP
tp5修改(实现即点即改)
Oct 18 PHP
Laravel框架Blade模板简介及模板继承用法分析
Dec 03 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
简单的cookie计数器实现源码
2013/06/07 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
PHP面向对象程序设计重载(overloading)操作详解
2019/06/13 PHP
php redis setnx分布式锁简单原理解析
2020/10/23 PHP
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
JS设置CSS样式的方式汇总
2017/01/21 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
2018/01/04 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
详解基于React.js和Node.js的SSR实现方案
2019/03/21 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
原生js代码能实现call和bind吗
2019/07/31 Javascript
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
Python实现直播推流效果
2019/11/26 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
法国最大的在线眼镜店:EasyLunettes
2019/08/26 全球购物
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
商务英语求职自荐信范文
2013/12/24 职场文书
翻译学院毕业生自荐书
2014/02/02 职场文书
争做文明公民倡议书
2014/08/29 职场文书
办理收楼委托书范本
2014/10/09 职场文书
公务员检讨书
2014/11/01 职场文书
文明礼仪倡议书
2015/04/28 职场文书
活动费用申请报告
2015/05/15 职场文书
乡镇党建工作总结2015
2015/05/19 职场文书
win10下go mod配置方式
2021/04/25 Golang