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 随机数的产生、页面跳转、件读写、文件重命名、switch语句
Aug 07 PHP
PHP array_push 数组函数
Dec 26 PHP
PHP字符串中特殊符号的过滤方法介绍
Feb 18 PHP
一个php生成16位随机数的代码(两种方法)
Sep 16 PHP
php计算整个目录大小的方法
Jun 19 PHP
YII Framework框架教程之国际化实现方法
Mar 14 PHP
Yii框架上传图片用法总结
Mar 28 PHP
浅谈php(codeigniter)安全性注意事项
Apr 06 PHP
PHP无限极分类函数的实现方法详解
Apr 15 PHP
thinkphp5框架扩展redis类方法示例
May 06 PHP
php web环境和命令行环境下查找php.ini的位置
Jul 17 PHP
laravel框架 laravel-admin上传图片到oss的方法
Oct 13 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实现的数字验证码及数字运算验证码
2015/07/30 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
基于jquery的自定义鼠标提示效果 jquery.toolTip
2010/11/14 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
js Array对象的扩展函数代码
2013/04/24 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
js实现九宫格拼图小游戏
2017/02/13 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
2019/11/05 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
JS this关键字在ajax中使用出现问题解决方案
2020/07/17 Javascript
[03:01]DOTA2英雄基础教程 露娜
2014/01/07 DOTA
python关闭windows进程的方法
2015/04/18 Python
部署Python的框架下的web app的详细教程
2015/04/30 Python
python制作一个桌面便签软件
2015/08/09 Python
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
Scrapy的简单使用教程
2017/10/24 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
python中set()函数简介及实例解析
2018/01/09 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
python3 求约数的实例
2019/12/05 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
python属于跨平台语言码
2020/06/09 Python
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
大学生村官事迹材料
2014/01/21 职场文书
经典毕业生求职信
2014/07/12 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
python之基数排序的实现
2021/07/26 Python