导航:首页 > 编程语言 > php生成4位验证码

php生成4位验证码

发布时间:2023-07-18 00:39:53

php验证码怎么实现

1.新建code.php验证码生成文件

在此之前必须打开php的GD库,修改php.ini文件的配置,取消extension=php_gd2.dll前面的分号。代码如下:

<?php

session_start();

//生成验证码图片

Header("Content-type: image/PNG");

$im = imagecreate(44,18);

$back = ImageColorAllocate($im, 245,245,245);

imagefill($im,0,0,$back); //背景

srand((double)microtime()*1000000);

//生成4位数字

for($i=0;$i<4;$i++){

$font = ImageColorAllocate($im, rand(100,255),rand(0,100),rand(100,255));

$authnum=rand(1,9);

$vcodes.=$authnum;

imagestring($im, 5, 2+$i*10, 1, $authnum, $font);

}

for($i=0;$i<100;$i++) //加入干扰象素

{

$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));

imagesetpixel($im, rand()p , rand()0 , $randcolor);

}

ImagePNG($im);

ImageDestroy($im);

$_SESSION['Checknum'] = $vcodes;

?>

2. 显示验证码图片

在需要显示验证码的页面中加入

<input type="text" name="passcode" >

<img src="code.php">

3.判断并获取验证码的值

验证码是通过第一步骤代码中的$_SESSION['Checknum'] = $vcodes;赋的值,所以验证码的值存在$_SESSION['Checknum']当中。在验证页面,使用以下代码,

...

session_start();//启动会话

$code=$_POST["passcode"];

if( $code == $_SESSION["Checknum"])

{...}即可完成验证码登录。

运行截图:

望采纳,谢谢

⑵ php中如何使用随机函数rand()生成一个数字验证码

如果要生成四位数字的验证码,则可以用函数:

$srand = rand(1000,9999);

会生成在1000到9999之间的随机数字,如果要生成更多位数的数字,可以更改最小、最大值。

⑶ php怎么实现验证码的

验证码功能机制实现思路

  1. 常规的验证码实现:

    a、产生一张png的图片


    b、为图片设置背景色


    c、设置字体颜色和样式


    d、产生4位数的随机的验证码


    e、把产生的每个字符调整旋转角度和位置画到png图片上


    f、加入噪点和干扰线防止注册机器分析原图片来恶意注册


    g、输出图片


    h、释放图片所占内存


    i、将验证码保存到session或是数据库


    j、将和输入的验证码进行对比

  2. 短信(邮箱)验证码机制:

    a、产生4-6位数的随机的验证码


    b、把产生的每个字符保存到session或是数据库


    c、将验证码发送到用户的手机(邮箱)


    d、用户在规定时间内进行输入


    e、将验证码从session或是数据库中取出


    f、将和输入的验证码进行对比验证

⑷ 我的php代码中登陆界面加一个验证码,如何实现

php登陆页面+验证码的实现,参考如下:

1、首先新建一个php站点;

⑸ 请问PHP生成验证码的类怎么写

<?php
classCode{
//1.定义各个成员有宽、高、画布、字数、类型、画类型
private$width;//宽度
private$height;//高度
private$num;//验证码字数
private$imgType;//生成图片类型
private$Type;//字串类型1,2,3三个选项1纯数字2纯小写字母3大小写数字混合
private$hb;//画布
public$codestr;//验证码字串
publicfunction__construct($height=20,$num=4,$imgType="jpeg",$Type=1){
$this->width=$num*20;
$this->height=$height;
$this->num=$num;
$this->imgType=$imgType;
$this->Type=$Type;
$this->codestr=$this->codestr();
$this->zuhe();
}
//2.定义随机获取字符串函数
privatefunctioncodestr(){
switch($this->Type){
case1://类型为1获取1-9随机数
$str=implode("",array_rand(range(0,9),$this->num));
break;
case2://类型为2获取a-z随机小写字母
$str=implode("",array_rand(array_flip(range(a,z)),$this->num));
break;
case3://类型为3获取数字,小写字母,大写字母混合
for($i=0;$i<$this->num;$i++){
$m=rand(0,2);
switch($m){
case0:
$o=rand(48,57);
break;
case1:
$o=rand(65,90);
break;
case2:
$o=rand(97,122);
break;
}
$str.=sprintf("%c",$o);
}
break;
}

return$str;
}

//3.初始化画布图像资源
privatefunctionHb(){
$this->hb=imagecreatetruecolor($this->width,$this->height);
}
//4.生成背景颜色
privatefunctionBg(){
returnimagecolorallocate($this->hb,rand(130,250),rand(130,250),rand(130,250));
}
//5.生成字体颜色
privatefunctionFont(){
returnimagecolorallocate($this->hb,rand(0,100),rand(0,100),rand(0,100));
}
//6.填充背景颜色
privatefunctionBgColor(){
imagefilledrectangle($this->hb,0,0,$this->width,$this->height,$this->Bg());
}
//7.干扰点
privatefunctionganrao(){
$sum=floor(($this->width)*($this->height)/3);
for($i=0;$i<$sum;$i++){
imagesetpixel($this->hb,rand(0,$this->width),rand(0,$this->height),$this->Bg());
}
}
//8.随机直线弧线
privatefunctionhuxian(){
for($i=0;$i<$this->num;$i++){
imageArc($this->hb,rand(0,$this->width),rand(0,$this->height),rand(0,$this->width),rand(0,$this->height),rand(0,360),rand(0,360),$this->Bg());
}
}
//9.写字
privatefunctionxiezi(){
for($i=0;$i<$this->num;$i++){
$x=ceil($this->width/$this->num)*$i;
$y=rand(1,$this->height-15);
imagechar($this->hb,5,$x+4,$y,$this->codestr[$i],$this->Font());
}
}
//10.输出
privatefunctionOutImg(){
$shuchu="image".$this->imgType;
$header="Content-type:image/".$this->imgType;
if(function_exists($shuchu)){
header($header);
$shuchu($this->hb);
}else{
exit("GD库没有此类图像");
}
}
//11.拼装
privatefunctionzuhe(){
$this->Hb();
$this->BgColor();
$this->ganrao();
$this->huxian();
$this->xiezi();
$this->OutImg();
}
publicfunctiongetCodeStr(){
return$this->codestr;
}
}

$a=newCode();
$a->getCodeStr();
?>

⑹ 谁能帮我写一个PHP的短信验证例程,

<?php

/**

*

* User: shikiliu

* Date: 13-7-11

*/

class TelephoneCheck

{



/**

* 取得某个用户某次活动的手机验证码

* @param $uin 用户ID 小于10000系统保留

* @param $actId 活动ID 小于1000系统保留

* @param $telephone 用户手机号

* @return bool|int 4位数的验证码

*/

public function getTelephoneCode($uin, $actId, $telephone)

{


if ($uin < 10000 || $actId < 1000 || empty($telephone)) {

return false;

}


$time = time();


$timeFeature = hexdec(substr(md5($time), 0, 3)) & 0x1F1;


$telephoneFeature = hexdec(substr(md5($telephone), 8, 4));


$actIdFeature = hexdec(substr(md5($actId), 16, 4));


$uinFeature = hexdec(substr(md5($uin), 24, 4));


$sumFeature = $telephoneFeature + $actIdFeature + $uinFeature;


$sumFeature = $sumFeature % 10000;


if ($sumFeature < 1000) {

$sumFeature = 5145;

}


$result = $sumFeature | $timeFeature;


return $result;

}



/**

* 验证用户的手机验证码

* @param $uin 用户ID 小于10000系统保留

* @param $actId 活动ID 小于1000系统保留

* @param $telephone 用户手机号

* @param $code getTelephoneCode生成的验证码

* @return bool 是否正确

*/

public function checkTelephoneCode($uin, $actId, $telephone, $code)

{


if ($uin < 10000 || $actId < 1000 || empty($telephone) || empty($code)) {

return false;

}


$telephoneFeature = hexdec(substr(md5($telephone), 8, 4));


$actIdFeature = hexdec(substr(md5($actId), 16, 4));


$uinFeature = hexdec(substr(md5($uin), 24, 4));


$sumFeature = $telephoneFeature + $actIdFeature + $uinFeature;


$sumFeature = $sumFeature % 10000;


if ($sumFeature < 1000) {

$sumFeature = 5145;

}


$sumFeature = $sumFeature & 0xE0E;


$code = $code & 0xE0E;


if ($sumFeature == $code) {

return true;

}

return false;

}

}



$actId = 10001;

$telephone = 13797025562;

$uin = 514540767;



$telCode = new TelephoneCheck();



$code = $telCode->getTelephoneCode($uin, $actId, $telephone);


var_mp($code);


var_mp($telCode->checkTelephoneCode($uin, $actId, $telephone, $code));


var_mp($telCode->checkTelephoneCode($uin, $actId, $telephone, $code+10));

⑺ PHP编写的随机生成4位数字的验证码,在代码开头加上<HTML>,<HEAD>,<TITLE>,就不能正常显示。

在用php编写绘图的时候
这个php就相当于是 一个图片文件 如后缀为jpg 的,你打开这类文件在上面html标记,哪当然果断报错!
php可以根据输出的东西不同可变不同的文件
如 php读入一个pdf文件直接输出,那么这个页面就直接相当于是这个文件
没一种文件都有自己的格式 html有他的格式 图片有图片的格式
所以这个是严重的错误,在输出图片的页面是不能输入任何字符的
就算在php标记之前打一个空格都会报错
这就好像你电脑里的图片,你用记事本打开,在最前面加个空格或其他神吗的都会导致图片无法打开

想要实现你的想法
只有这样
文件a写html标记
在里面引用图片 <img src="2.php" title="验证码" />

阅读全文

与php生成4位验证码相关的资料

热点内容
java互联网公司 浏览:68
对弈下象棋的app哪里好 浏览:705
有什么食谱app推荐 浏览:469
python实现动态口令 浏览:823
我的世界电脑服务器地址怎么添加 浏览:850
传奇地图怎么加密到pak 浏览:977
linux删除mysql用户 浏览:755
图案设计pdf 浏览:584
pdf编辑器在线 浏览:471
华为云云耀服务器如何关机 浏览:994
数字加密的历史 浏览:613
宏杰文件夹打不开 浏览:819
施工日记app哪个好 浏览:566
什么是压缩机的排气量 浏览:538
在哪个app可以预约一科考试 浏览:634
易语言vmp加壳源码 浏览:513
阅读前端框架源码 浏览:14
我的世界命令方块传送指令 浏览:545
不能用start命令打开xp 浏览:926
text命令 浏览:31