PHP验证码生成程序几种方法
发布:smiling 来源: PHP粉丝网 添加日期:2014-08-22 10:33:40 浏览: 评论:0
PHP验证码生这个功能常用于用用户注册登录或发布信息时一个安全验证的基本功能,下面小编来给大家介绍一些常用的PHP验证码生成代码与应用实例.
例1,直接使用数组,此方法比较简单,代码如下:
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- </head>
- <body>
- <?php
- $arr=array(2,3,4,5,8,1,9,7,"a","b","c","d","e","f","中","国","南","北","大","小","多","少");
- $b=array_rand($arr,3);
- ?>
- <form action="yz.php" method="post">
- <input type="text" name="code" />
- <input type="hidden" name="yanzhengma" value="<?php foreach($b as $key)
- {
- echo $arr[$key];
- }
- ?>"
- />
- <input type="submit" name="submit" value="do" />
- </form>
- <?php
- echo “code:";
- foreach($b as $key)
- {
- echo $arr[$key];
- }
- ?>
- </body>
- </html>(以上语句另存为一个php文件)
- <?php
- header(“Content-Type:text/html;charset=utf-8");
- echo $_POST["yanzhengma"];
- echo $_POST["code"];
- if($_POST["yanzhengma"]==$_POST["code"])
- {
- echo “验证码正确";
- }//开源代码phpfensi.com
- else
- {
- die(“<script>alert(‘验证码不正确");location="array_rand.php";</script>");
- }
- ?>
以上语句另存为yz.php
例2,也是用数组只不是数据多了一点,代码如下:
- function UPCAbarcode($code) {
- $lw = 2; $hi = 100;
- $Lencode = array('0001101','0011001','0010011','0111101','0100011',
- '0110001','0101111','0111011','0110111','0001011');
- $Rencode = array('1110010','1100110','1101100','1000010','1011100',
- '1001110','1010000','1000100','1001000','1110100');
- $ends = '101'; $center = '01010';
- /* UPC-A Must be 11 digits, we compute the checksum. */
- if ( strlen($code) != 11 ) { die("UPC-A Must be 11 digits."); }
- /* Compute the EAN-13 Checksum digit */
- $ncode = '0'.$code;
- $even = 0; $odd = 0;
- for ($x=0;$x<12;$x++) {
- if ($x % 2) { $odd += $ncode[$x]; } else { $even += $ncode[$x]; }
- }
- $code.=(10 - (($odd * 3 + $even) % 10)) % 10;
- /* Create the bar encoding using a binary string */
- $bars=$ends;
- $bars.=$Lencode[$code[0]];
- for($x=1;$x<6;$x++) {
- $bars.=$Lencode[$code[$x]];
- }
- $bars.=$center;
- for($x=6;$x<12;$x++) {
- $bars.=$Rencode[$code[$x]];
- }
- $bars.=$ends;
- /* Generate the Barcode Image */
- $img = ImageCreate($lw*95+30,$hi+30);
- $fg = ImageColorAllocate($img, 0, 0, 0);
- $bg = ImageColorAllocate($img, 255, 255, 255);
- ImageFilledRectangle($img, 0, 0, $lw*95+30, $hi+30, $bg);
- $shift=10;
- for ($x=0;$x if (($x<10) || ($x>=45 && $x<50) || ($x >=85)) { $sh=10; } else { $sh=0; }
- if ($bars[$x] == '1') { $color = $fg; } else { $color = $bg; }
- ImageFilledRectangle($img, ($x*$lw)+15,5,($x+1)*$lw+14,$hi+5+$sh,$color);
- }
- /* Add the Human Readable Label */
- ImageString($img,4,5,$hi-5,$code[0],$fg);
- for ($x=0;$x<5;$x++) {
- ImageString($img,5,$lw*(13+$x*6)+15,$hi+5,$code[$x+1],$fg);
- ImageString($img,5,$lw*(53+$x*6)+15,$hi+5,$code[$x+6],$fg);
- }
- ImageString($img,4,$lw*95+17,$hi-5,$code[11],$fg);
- /* Output the Header and Content. */
- header("Content-Type: image/png");
- ImagePNG($img);
- }
- UPCAbarcode('12345678901');
- ?>
例3,这个是一个比较完整的ajax刷新验证码实例.
vcode.php,代码如下:
- <?php
- session_start();//开启session功能
- header("Cache-Control: no-cache, must-revalidate");
- $im = imagecreate(60,30);//定义图片宽度和高度
- $vcode=getVCode();//获取要显示的字符
- $bg = imagecolorallocate($im, 255, 255, 255);//定义图片背景
- $txt = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));//定义要显示字符的颜色
- imagestring($im, 8, 0, 0, $vcode, $txt);//写入字符串到图片
- header(Content-type: image/jpeg);//定义Content-type
- imagejpeg($im);//以JPEG格式显示图片
- $_SESSION[vcode]=$vcode;//写入SESSION
- function getVCode(){ //随机生成用户指定个数的字符串
- $codenum=4;
- $checkcode="";
- $string="";//要显示的可选字符串,请自行定义;
- for($i=0;$i<$codenum;$i ) {
- $number=rand(0,2);
- switch($number){ //根据可选字符串可灵活定义;
- case 0 : $rand_number=rand(0,10);break;
- case 1 : $rand_number=rand(11,36);break;
- case 2 : $rand_number=rand(37,62);break;
- }
- $code=substr($string,$rand_number,1);
- $checkcode=$checkcode.$code;
- }
- return $checkcode;
- }
- ?>
loginform.html,代码如下:
- <!--详细信息-->
- <form name="loginform">
- <table class="dtable">
- <tr>
- <td width="100"> 用户名 </td><td><input class="txtbox" name="loginname" type=text size="30"/></td>
- </tr>
- <tr>
- <td width="100"> 密码 </td><td><input class="txtbox" name="loginpwd" type=password size="30"/></td>
- </tr>
- <tr>
- <td width="100"> 验证码 </td>
- <td><input class="txtbox" name="loginvcode" type=text size="10"/>
- <img id="vcode" src="vcode.php" alt="验证码" align="absmiddle"/>
- <a href="javascript:getVCode();">换一张</a></td>
- </tr>
- </table>
- <table>
- <tr><td colspan="2">
- <input class="btn" name="ok" type="button" value="登录" onclick="setType('usr');usrVCode();">
- <input class="btn" name="reset" type="reset" value="重写">
- <input class="btn" name="exit" type="button" value="退出" onclick="Hide();">
- </td></tr>
- </table>
- <table>
- <tr><td colspan="2">
- 还没有注册? <a href="javascript:setType('usr');Show('0','addform');">马上注册</a>
- 忘记密码? <a href="javascript:setType('usr');Show('0','pwdform');">取回密码</a>
- </td></tr>
- </table>
- </form>
vcode.js,代码如下:
- //该函数用来获取验证码
- function getVCode() {
- var vcode=document.getElementById('vcode');
- vcode.src = 'vcode.php?nocache='+new Date().getTime();
- }
- //该函数用来验证验证码
- function usrVCode() {
- if(!checkLogin())return false;
- var loginvcode=document.loginform.loginvcode.value;
- var xmlhttp1=createAjax();
- var data='&loginvcode='+loginvcode;
- if (xmlhttp1) {
- var state=document.getElementById('state');
- xmlhttp1.open('get',?do=vcodedo'+data,true);
- xmlhttp1.send(null);
- xmlhttp1.onreadystatechange=function() {
- if (xmlhttp1.readyState==4 && xmlhttp1.status==200) {
- setTimeout("state.style.display = 'none';",1000);
- var myres=xmlhttp1.responseText;
- var result=(myres==1)?"恭喜您,验证码输入正确!":"很抱歉,验证码输入错误!";
- if(myres==0)alert(result);
- if(myres==1)usrLogin();
- }
- else {
- state.style.display = "";
- state.style.left=(document.body.offsetWidth-350)/2;
- state.style.top=(document.body.offsetHeight-235)/2+document.body.scrollTop;
- }
- }
- }
- }
Tags: PHP验证码 验证码程序
相关文章
- ·php网页生成验证码实现程序(2014-07-30)
- ·简单实例php验证码代码(2014-08-17)
- ·PHP验证码生成与验证例子(2014-08-22)
- ·PHP验证码实现代码简单示例(2014-08-22)
- ·php验证码程序代码(2014-08-22)
- ·PHP验证码之Ajax验证实现方法(2014-08-22)
- ·php中文汉字验证码程序(2014-08-23)
- ·一个完整php验证码实例程序(2014-08-25)
- ·php 用户登录验证码的实现方法(2014-09-11)
- ·php jquery 验证码代码(2014-09-20)
- ·php验证码生成器(2018-08-06)
- ·一个好用的PHP验证码类实例分享(2020-08-17)
- ·PHP+javascript制作带提示的验证码源码分享(2021-01-15)
- ·php程序总是提示验证码输入有误解决方案(2021-05-07)
- ·php验证码生成代码(2021-06-26)
- ·php验证码的制作思路和实现方法(2021-06-26)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)