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和MySql来与ODBC数据连接
Oct 09 PHP
php判断输入不超过mysql的varchar字段的长度范围
Jun 24 PHP
PHP中使用unset销毁变量并内存释放问题
Jul 05 PHP
解析php获取字符串的编码格式的方法(函数)
Jun 21 PHP
PHP数字和字符串ID互转函数(类似优酷ID)
Jun 30 PHP
PHP保存带BOM文件的方法
Feb 12 PHP
php实现修改新闻时删除图片的方法
May 12 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
Feb 23 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
Apr 23 PHP
PHP区块查询实现方法分析
May 12 PHP
Laravel使用RabbitMQ的方法示例
Jun 18 PHP
七种PHP开发环境搭建工具
Jun 28 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
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
PHP后端银联支付及退款实例代码
2017/06/23 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
2013/12/19 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
JavaScript动态创建link标签到head里的方法
2014/12/22 Javascript
AngularJS控制器之间的数据共享及通信详解
2016/08/01 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
vue打包相关细节整理(小结)
2018/09/28 Javascript
js中的数组对象排序分析
2018/12/11 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
Vue实现剪切板图片压缩功能
2020/02/04 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
python实现下载文件的三种方法
2017/02/09 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
在python中修改.properties文件的操作
2020/04/08 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
新加坡航空官方网站:Singapore Airlines
2016/10/13 全球购物
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
销售总经理岗位职责
2014/03/15 职场文书
助学贷款贫困证明
2014/09/23 职场文书
高考升学宴答谢词
2015/01/20 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
现货白银电话营销话术
2015/05/29 职场文书
对公司的意见和建议
2015/06/04 职场文书
iPhone13再次曝光
2021/04/15 数码科技
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript