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中对数据库操作的封装
Oct 09 PHP
谈谈新手如何学习PHP 默默经典版本
Aug 04 PHP
PHP教程 预定义变量
Oct 23 PHP
一步一步学习PHP(1) php开发环境配置
Feb 15 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
Jun 06 PHP
CodeIgniter框架URL路由总结
Sep 03 PHP
php实现多城市切换特效
Aug 09 PHP
使用php-timeit估计php函数的执行时间
Sep 06 PHP
一个非常实用的php文件上传类
Jul 04 PHP
PHP下载文件函数与用法示例
Sep 27 PHP
Laravel框架控制器的request与response用法示例
Sep 30 PHP
php实现统计IP数及在线人数的示例代码
Jul 22 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下使用以下代码连接并测试
2008/04/09 PHP
php中使用gd库实现下载网页中所有图片
2015/05/12 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
一个js写的日历(代码部分网摘)
2009/09/20 Javascript
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
vuex存储token示例
2019/11/11 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
python3+PyQt5实现文档打印功能
2018/04/24 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
django 自定义过滤器的实现
2019/02/26 Python
Django Aggregation聚合使用方法解析
2019/08/01 Python
使用Python刷淘宝喵币(低阶入门版)
2019/10/30 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
python xlsxwriter模块的使用
2020/12/24 Python
杭州时比特电子有限公司SQL
2013/08/22 面试题
英文简历中的自我评价
2013/10/06 职场文书
计算机应用与科学个人的自我评价
2013/11/15 职场文书
外语系毕业生找工作的求职信
2013/11/28 职场文书
森林防火工作方案
2014/02/14 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书