简明现代魔法 -> PHP服务器脚本 -> PHP 验证码的实现

PHP 验证码的实现

2010-04-12

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>";
		}
	}
	 
?>
随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们