PHP 验证码的实现代码

  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>";

  }

  }

  ?>