怎么解决php验证码不变的问题

技术怎么解决php验证码不变的问题这篇文章主要介绍“怎么解决php验证码不变的问题”,在日常操作中,相信很多人在怎么解决php验证码不变的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”

本文主要介绍“如何解决php验证码不变的问题”。在日常操作中,相信很多人对于如何解决php验证码不变的问题都有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮助大家解决“如何解决php验证码不变的问题”的疑惑。接下来,请和边肖一起学习!

保持php验证码不变的解决方案:1。使用JavaScript : ckim();方法来更改验证码;2.单击并通过“nclick='this.src=' .”的方法更改图片。

怎么解决php验证码不变的问题

操作环境:Windows7系统,PHP 7.1版本,DELL G3电脑。

php 验证码不变怎么办?

php验证码没有刷新变化(替换)。

test.php

超文本标记语言

脚本

function cking(){ 0

document.getElementById('img ')。src='validateCode2.php '?newDate()。getTime();

}

/script

meta http-equiv=' Content-Type ' Content=' text/html;charset=UTF-8 '

标题/头衔

/head

身体

!第一种方法

ahref=' JavaScript : ckim();'Title='更改验证码的图片' img src=' validate code 2 . PHP ' id=' img ' alt='我看不清楚,请更改'//aa///aahref=' JavaScript : ckimg();'Title=“更改验证码图片”不清楚,请更改/a

!第二种方法

Imgsrc='validateCode2.php'alt='看不清楚,点击更改图片' id=' img 'n click=' this . src=' validatecode2.php 'newDate()。getTime();style=' cursor:pointer'

/body

</html>

生产验证码的类,包含了一些验证码生成的参数,如:大小,颜色,显示验证码的符号类型

validateCode2.php

<?php
session_start();
class Authnum {
//图片对象、宽度、高度、验证码长度
private $im;
private $im_width;
private $im_height;
private $len;
//随机字符串、y轴坐标值、随机颜色
private $randnum;
private $y;
private $randcolor;
//背景色的红绿蓝,默认是浅灰色
public $red=238;
public $green=238;
public $blue=238;
/**
* 可选设置:验证码类型、干扰点、干扰线、Y轴随机
* 设为 false 表示不启用
**/
//默认是大小写数字混合型,1 2 3 分别表示 小写、大写、数字型
public $ext_num_type='';
public $ext_pixel = false; //干扰点
public $ext_line = false; //干扰线
public $ext_rand_y= true; //Y轴随机
function __construct ($len=4,$im_width='',$im_height=25) {
// 验证码长度、图片宽度、高度是实例化类时必需的数据
$this->len = $len; $im_width = $len * 15;
$this->im_width = $im_width;
$this->im_height= $im_height;
$this->im = imagecreate($im_width,$im_height);
}
// 设置图片背景颜色,默认是浅灰色背景
function set_bgcolor () {
imagecolorallocate($this->im,$this->red,$this->green,$this->blue);
}
// 获得任意位数的随机码
function get_randnum () {
$an1 = 'abcdefghijklmnopqrstuvwxyz';
$an2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$an3 = '0123456789';
if ($this->ext_num_type == '') $str = $an1.$an2.$an3;
if ($this->ext_num_type == 1) $str = $an1;
if ($this->ext_num_type == 2) $str = $an2;
if ($this->ext_num_type == 3) $str = $an3;
for ($i = 0; $i < $this->len; $i++) {
    $start = rand(1,strlen($str) - 1);
    $randnum .= substr($str,$start,1);
}
$this->randnum = $randnum;
$_SESSION[an] = $this->randnum;
}
// 获得验证码图片Y轴
function get_y () {
if ($this->ext_rand_y) $this->y = rand(5, $this->im_height/5);
else $this->y = $this->im_height / 4 ;
}
// 获得随机色
function get_randcolor () {
$this->randcolor = imagecolorallocate($this->im,rand(0,100),rand(0,150),rand(0,200));
}
// 添加干扰点
function set_ext_pixel () {
if ($this->ext_pixel) {
for($i = 0; $i < 100; $i++){
$this->get_randcolor();
imagesetpixel($this->im, rand()%100, rand()%100, $this->randcolor);
}
}
}
// 添加干扰线
function set_ext_line () {
if ($this->ext_line) {
for($j = 0; $j < 2; $j++){
$rand_x = rand(2, $this->im_width);
$rand_y = rand(2, $this->im_height);
$rand_x2 = rand(2, $this->im_width);
$rand_y2 = rand(2, $this->im_height);
$this->get_randcolor();
imageline($this->im, $rand_x, $rand_y, $rand_x2, $rand_y2, $this->randcolor);
}
}
}
/**创建验证码图像:
* 建立画布(__construct函数)
* 设置画布背景($this->set_bgcolor();)
* 获取随机字符串($this->get_randnum ();)
* 文字写到图片上(imagestring函数)
* 添加干扰点/线($this->set_ext_line(); $this->set_ext_pixel();)
* 输出图片
**/
function create () {
$this->set_bgcolor();
$this->get_randnum ();
for($i = 0; $i < $this->len; $i++){
$font = rand(4,6);
$x = $i/$this->len * $this->im_width + rand(1, $this->len);
$this->get_y();
$this->get_randcolor();
imagestring($this->im, $font, $x, $this->y, substr($this->randnum, $i ,1), $this->randcolor);
}
$this->set_ext_line();
$this->set_ext_pixel();
header("content-type:image/png");
imagepng($this->im);
imagedestroy($this->im); //释放图像资源
}
}//end class
/**使用验证码类的方法:
* $an = new Authnum(验证码长度,图片宽度,图片高度);
* 实例化时不带参数则默认是四位的60*25尺寸的常规验证码图片
* 表单页面检测验证码的方法,对比 $_SESSION[an] 是否等于 $_POST[验证码文本框ID]
* 可选配置:
* 1.验证码类型:$an->ext_num_type=1; 值为1是小写类型,2是大写类型,3是数字类型
* 2.干扰点:$an->ext_pixel = false; 值为false表示不添加干扰点
* 3.干扰线:$an->ext_line = false; 值为false表示不添加干扰线
* 4.Y轴随机:$an->ext_rand_y = false; 值为false表示不支持图片Y轴随机
* 5.图片背景:改变 $red $green $blue 三个成员变量的值即可
**/
$an = new Authnum();
$an->ext_num_type='';
$an->ext_pixel = true; //干扰点
$an->ext_line = false; //干扰线
$an->ext_rand_y= true; //Y轴随机
$an->green = 238;
$an->create();
?>

到此,关于“怎么解决php验证码不变的问题”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/46802.html

(0)

相关推荐

  • bite过去式,bite咬的过去式是什么

    技术bite过去式,bite咬的过去式是什么bit[英][b?t][美][b?t]
    n.一点bite过去式,一块;少量,少许;一会儿,一转眼;[计]比特(二进位制信息单位);
    adj.很小的,微不足道的;
    adv.[口语

    生活 2021年10月20日
  • Windows如何安装和使用ROS1Noetic和ROS2Foxy

    技术Windows如何安装和使用ROS1Noetic和ROS2Foxy小编给大家分享一下Windows如何安装和使用ROS1Noetic和ROS2Foxy,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!更

    攻略 2021年11月25日
  • 哪些业务适合租用香港服务器

    技术哪些业务适合租用香港服务器虽然大多数海外建站能从租用香港服务器中获得很多好处。然而,很多网站并不需要一开始就租用高性能的香港服务器,那么哪些业务适合使用香港服务器呢,下面就来介绍一下以下几个业务类型更适合使用香港服务

    礼包 2021年10月19日
  • mysql百万级数据统计(mysql百万级数据分组)

    技术Mysql百万级数据迁移的示例分析这篇文章将为大家详细讲解有关Mysql百万级数据迁移的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

    攻略 2021年12月20日
  • Act Framework多模块开发指南是什么

    技术Act Framework多模块开发指南是什么这篇文章给大家介绍Act Framework多模块开发指南是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。ActFramework 是一个Jav

    攻略 2021年10月20日
  • hadoop的hive和spark有什么区别(spark和hive的优缺点)

    技术如何实现Apache Hive 和Spark的对比分析本篇文章给大家分享的是有关如何实现Apache Hive 和Spark的对比分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不

    攻略 2021年12月17日