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 验证码的实现代码
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@