使用PHP在服务器端生成图文验证码

图文验证码的实现原理:

1)准备些许图片将其存储在数据库,每一张图片对应一个标识字段

2)在服务器端使用数组的形式将图片与标识字段组合起来

3)随机给客户端返回图片,并接受用户输入的字段

4)将用户输入的字段与服务器存储的与每张图片的信息进行比对

5)相同则通过,否则不通过

a)第一步生成验证码

createCode.php

<?php

       header("content-type:text/html;charset=utf-8");

       session_start();//开启服务器存储

       $table=array(

         'pic0'=>"猫",

          'pic1'=>'狗’,

          'pic2'=>'猴',

          'pic3'=>'鱼',

);

$index=rand(0,3);//生成随机数

$value=$table['pic'.$index];//取出随机值

$_SESSION['authcode']=$value;//将值存储在服务器端

$filename=dirname(__FILE__).'\\pic'.$index.'.jpg';//给出文件的地址

$content=file_get_contents($filename);//读取文件的内容

ob_clean();//清除缓存

header("content-type:image/jpg");//规定以jpg的形式输出图片

echo $contents;//输出图片文件

?>

b)使用验证码

useCode.php

<?php

       header("content-type:text/html;charset=utf-8");

if(isset($_REQUEST["authcode"])){

session_start();

if($_SESSION['authcode']==$_REQUEST['authcode']){

echo "<font>验证通过</font>";

}

else{

echo"<font>验证失败</font>";

}

exit();

}

?>

<!DOCTYPE html>

<html>

<head>

      <meta charset="utf-8">

<title>验证码正确</title>

</head>

</html>

<body>

        <form action="useCode.php">

                 <p>验证码图片:

                                  <img src="createCode.php?=<?php echo rand();?>

                                     onclick="this.src='createCode.php?+<?php rand(0,200)?>'"

                                   alt=""

                                     ">

</p>

<p>输入验证码的内容:

<input type="text" name="authcode" value="">

</p>

<p>

      <input type="submit" value="提交">

</p>

</form>

</body>

 

posted @ 2017-06-21 15:45  维尼熊320  阅读(170)  评论(0编辑  收藏  举报