`
linlin_xiao
  • 浏览: 15402 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

php验证码和不能正常显示解决方法

    博客分类:
  • php
阅读更多

效果如图:

 

 

 

 

文件都放到了同一文件夹下。

 

************************************容易出现的问题*************

 

 

 

1.未开启php_gd2.dll  去php.ini将其前面的“ ;”去掉

2.上面的checks.php中<?前面有空格或者内容

3.字符编码改为统一的

4.最容易忽略的一点:

5.如果copy代码到你的项目中图片显示为×,检查你的checks.php放置路径

  你本机上的环境是将报错提示全部打开的,所以在输出时有系统的未定义提示信息也跟着一起输出了,这样生成的图片肯定就不正常了,方法有两,在ValidationCode.php和checks.php文件开头加上ini_set('display_errors', 'Off');  就ok了

 

 

 

**********************************************************

 

CreateImage.class.php

<?php
class ValidationCode
{


	private $width,$height,$codenum;
	public $checkcode;     //产生的验证码
	private $checkimage;    //验证码图片
	private $disturbColor = ''; //干扰像素
	
	function __construct($width='80',$height='20',$codenum='4')
	{
	   $this->width=$width;
	   $this->height=$height;
	   $this->codenum=$codenum;
	}
	
	function outImg()
	{
	   //输出头
	   $this->outFileHeader();
	   //产生验证码
	   $this->createCode();
	
	   //产生图片
	   $this->createImage();
	   //设置干扰像素
	   $this->setDisturbColor();
	   //往图片上写验证码
	   $this->writeCheckCodeToImage();
	   imagepng($this->checkimage);
	   imagedestroy($this->checkimage);
	}
	
	private function outFileHeader()
	{
	   header ('Content-type: image/png');
	}
	
	private function createCode()
	{
	   $this->checkcode = strtoupper(substr(md5(rand()),0,$this->codenum));
	}
	
	private function createImage()
	{
	   $this->checkimage = @imagecreate($this->width,$this->height);
	   $back = imagecolorallocate($this->checkimage,255,255,255);
	   $border = imagecolorallocate($this->checkimage,0,0,0);  
	   imagefilledrectangle($this->checkimage,0,0,$this->width - 1,$this->height - 1,$back); // 白色底
	   imagerectangle($this->checkimage,0,0,$this->width - 1,$this->height - 1,$border);   // 黑色边框
	}
	
	private function setDisturbColor()
	{
	   for ($i=0;$i<=200;$i++)
	   {
		$this->disturbColor = imagecolorallocate($this->checkimage, rand(0,255), rand(0,255), rand(0,255));
		imagesetpixel($this->checkimage,rand(2,128),rand(2,38),$this->disturbColor);
	   }
	}
	
	private function writeCheckCodeToImage()
	{
	   for ($i=0;$i<=$this->codenum;$i++)
	   {
		$bg_color = imagecolorallocate ($this->checkimage, rand(0,255), rand(0,128), rand(0,255));
		$x = floor($this->width/$this->codenum)*$i;
		$y = rand(0,$this->height-15);
		imagechar ($this->checkimage, rand(5,8), $x, $y, $this->checkcode[$i], $bg_color);
	   }
	}
	
	function __destruct()
	{
	   unset($this->width,$this->height,$this->codenum);
	}
}

 

checks.php

 

<?php
ini_set('display_errors','off');
session_start();
header("content-type:image/png");  	  //设置创建图像的格式
$image_width=70;                      //设置图像宽度
$image_height=18;                     //设置图像高度
srand(microtime()*100000);         	  //设置随机数的种子
for($i=0;$i<4;$i++){                  //循环输出一个4位的随机数
   $new_number.=dechex(rand(0,15));
}
$_SESSION[check_checks]=$new_number;    //将获取的随机数验证码写入到SESSION变量中     

$num_image=imagecreate($image_width,$image_height);  //创建一个画布
imagecolorallocate($num_image,255,255,255);     	 //设置画布的颜色
for($i=0;$i<strlen($_SESSION[check_checks]);$i++){  //循环读取SESSION变量中的验证码
   $font=mt_rand(3,5);                            	//设置随机的字体
   $x=mt_rand(1,8)+$image_width*$i/4;               //设置随机字符所在位置的X坐标
   $y=mt_rand(1,$image_height/4);                   //设置随机字符所在位置的Y坐标
   $color=imagecolorallocate($num_image,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));  	 //设置字符的颜色
   imagestring($num_image,$font,$x,$y,$_SESSION[check_checks][$i],$color);				     //水平输出字符
}
imagepng($num_image);      			//生成PNG格式的图像
imagedestroy($num_image);  			//释放图像资源
?>

 

index.php

 

<?php
header("content-type:text/html; charset=utf-8");
session_start();
if(!empty($_POST["Submit"])){
$checks=$_POST["checks"];
if($checks==""){
echo "<script> alert('验证码不能为空');window.location.href='index.php';</script>";
}
if($checks==$_SESSION[check_checks]){
	echo "<script> alert('用户登录成功!');window.location.href='index.php';</script>";
}else{
	echo "<script> alert('您输入的验证码不正确!');window.location.href='index.php';</script>";
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>rand函数的应用</title>
<style type="text/css">
<!--
.STYLE1 {
	font-size: 12px;
	color: #FFFFFF;
	font-weight: bold;
}
.style2 {font-weight: bold; font-size: 12px;}
-->
</style>
</head>
<body>
<form name="form" method="post" action="">
<input type="hidden" name="Submit" id="Submit" value="1" />
  <table width="1003" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td width="168" height="169" background="images/index_01.gif">&nbsp;</td>
      <td width="685" background="images/index_02.gif">&nbsp;</td>
      <td width="150" background="images/index_03.gif">&nbsp;</td>
    </tr>
    <tr>
      <td width="168" height="311" background="images/index_04.gif">&nbsp;</td>
      <td background="images/index_05.gif"><table width="675" height="169"  border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td height="43" align="center" valign="baseline">&nbsp;</td>
          <td align="center" valign="middle">&nbsp;</td>
          <td align="center" valign="baseline">&nbsp;</td>
        </tr>
        <tr>
          <td width="382" height="24" align="center" valign="baseline">&nbsp;</td>
          <td width="207" height="24" valign="middle"><span class="style2">用户名</span><span class="STYLE1">
            <input  name="txt_user" id="txt_user" style="height:20px " size="10">
              </span></td>
          <td width="86" height="24" align="center" valign="baseline">&nbsp;</td>
        </tr>
        <tr>
          <td height="24" align="center" valign="baseline">&nbsp;</td>
          <td height="24" valign="middle"><span class="style2">密码</span><span class="STYLE1">
          <input  name="txt_pwd" type="password" id="txt_pwd" style="FONT-SIZE: 9pt; height:20px" size="10">
          </span></td>
          <td height="24" align="center" valign="baseline">&nbsp;</td>
        </tr>
        <tr>
          <td height="24" align="center" valign="baseline">&nbsp;</td>
          <td height="24" valign="middle"><span class="style2">验证码</span><span class="STYLE1">
          <input name="checks" size="6" style="height:20px ">
          <img src="./checks.php" width="70" height="18" border="0" align="bottom"></span>&nbsp;&nbsp;</td>
          <td height="24" align="center" valign="baseline">&nbsp;</td>
        </tr>
        <tr>
          <td height="40" align="center" valign="baseline">&nbsp;</td>
          <td align="center" valign="baseline">&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" id="Submit" name="Submit" value="登录" /></td>
          <td align="center" valign="baseline">&nbsp;</td>
        </tr>
      </table></td>
      <td background="images/index_06.gif">&nbsp;</td>
    </tr>
    <tr>
      <td height="100">&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
  </table>
</form>
</body>
</html>

 

 

 

 

  • 大小: 51.3 KB
0
0
分享到:
评论

相关推荐

    thinkphp,onethink和thinkox中验证码不显示的解决方法分析

    本文实例讲述了thinkphp,onethink和thinkox中验证码不显示的解决方法。分享给大家供大家参考,具体如下: 使用验证码的时候,一开始正常,后来不显示了 网上说是utf-8的编码问题,什么bom去掉,转化为无bom的格式 我都试...

    php伪静态验证码不显示的解决方案

    确保php环境能用,php文件能被正常服务器软件解析,也可以找到php.exe或者php-cgi.exe执行下,php配置没问题的话就是跳出一个cmd窗口且不会自动关闭,然后有一个光标一直在闪烁。 在测试网站根目录下面新建phpinfo....

    laravel5.4生成验证码的实例讲解

    总结:本篇文章介绍使用gregwar/captcha实现验证码的具体操作步骤,以及可能遇到的问题和解决办法。 操作步骤: 1, 在laravel5.4项目根目录下找到 composer.json 这个文件, 添加 “gregwar/captcha”: “1.*” 到...

    windows下使用IIS配置的PHP无法上传文件的解决方法

    的环境变量无法读取,php中验证码无法显示的问题,如今又有人反应无法上传图片的问题。从IIS替换Apache2的过程仅仅是开启IIS,关闭Apache2,其它的没什么变化,但是却发生了如此多的差异,看样子IIS支持PHP还是有很多...

    Destoon B2B网站 v5.0 build20130515 GBK

    后台提示请检查文件file/setting/split_sell.sql是否存在[修复]广告管理运行代码无反应[修复]专题相关评论不显示[修复]游客发布供求成功之后页面跳转错误[修复]部分服务器admin_online表不能正常安装[修复]修复编辑...

    客客威客系统KPPW v2.5 UTF8 Beta.zip

    计件悬赏延期加价后,有剩余金额未返还雇主(解决方案:雇主选稿后就不能再延期加价) 增值工具后台价格设置为0元后,发布时未购买成功(解决方案:0元也要能购买成功) 忘记密码,输入用户名,提示不存在,问题GBK中文...

    语言跟读小程序

    目前是测试版本,故未接入短信平台,所以手机是收不到验证码的,直接点获取验证码就已经填上了 如需在微信中体验完整功能,请联系文末的邮箱,注明理由和微信号申请体验权限 使用过程遇到的坑丶记录 背景图不生效...

    客客威客系统KPPW v2.5 GBK Beta.zip

    计件悬赏延期加价后,有剩余金额未返还雇主(解决方案:雇主选稿后就不能再延期加价) 增值工具后台价格设置为0元后,发布时未购买成功(解决方案:0元也要能购买成功) 忘记密码,输入用户名,提示不存在,问题GBK中文...

    caozha-order(竞价页订单管理系统)-PHP

    1、ThinkPHP框架必须在运行目录下设置伪静态才能正常访问,否则会显示404错误。 2、如果您使用的是Apache,伪静态设置为(.htaccess): Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{...

    JAVA上百实例源码以及开源项目源代码

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    JAVA上百实例源码以及开源项目

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    WAP2.0的手机网站留言板

    WiiMsg在手机上和电脑浏览器上都可以正常显示。 在手机上即可以完全管理WiiMsg(设置参数、管理留言等)。 2.功能更新 v1.5.22009-02-27 1.防止垃圾留言。一定时间内留言次数不能超过3次。 2.防止垃圾留言。一定时间内...

    caozha-order(竞价页订单管理系统) v1.7.7

    1、ThinkPHP框架必须在运行目录下设置伪静态才能正常访问,否则会显示404错误。 2、如果您使用的是Apache,伪静态设置为(.htaccess): Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{...

    木翼下载系统(MYDOWN) 4.0

    木翼下载系统是为下载型网站提供的解决方案。功能强大,简单易用,生成静态页面,支持Tag, 支持关键词搜索记录,支持可自定义扩展字段, 及其内容设定, 全面满足下载型网站的需求。 木翼下载系统(MYDOWN) 4.0 修正...

Global site tag (gtag.js) - Google Analytics