php获取验证码
① php 验证码
大哥!!!
哪里没有起作用了啊!????
checknum.php
你看最后一行你写了什么???
session_destroy();
你都销毁了所有的SESSION
那么你在code_check.php
肯定是看不到 $_SESSION['CODE'];的啊!!!
你删除session_destroy();看下
还有就是你在code_check.php这个页面中
$_SESSION['CODE'];大小写错了!!!
应该是$_SESSION['code'];,拜托以后看清楚啊!!
② PHP 验证码
问题一、你的验证码代码,没有发现开启session,也没有将随机产生的字符串保存到session,没保存,自然就无法比对
问题二、要点击一下刷新,其实很简单,给图片加一个点击事件,让图片重新请求一次服务器执行php验证码文件,需要注意的是,有于缓存的关系,在重新请求服务器的时候,给验证码图片路径加一个随机参数,防止刷新而验证码不变化,代码示例如下:
<img src='code.php' onclick="this.src='code.php?'+Math.random();" />
③ 如何用PHP生成验证码
php生成验证码,php验证码,php怎样生成验证码?
工具/原料
这个验证码较实用,大家可以应用到项目中。
方法/步骤
1.
<?php
/*设置文件头为图片输出*/
Header("Content-type:image/JPEG");
/*调用生成验证码函数*/
$checkcode=make_rand(4);
/**
*生成验证码字符
*@paramint$length验证码字符长度
*@returnstring
*/
functionmake_rand($length="32"){
$str="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$result="";
for($i=0;$i<$length;$i++){
$num[$i]=rand(0,25);
$result.=$str[$num[$i]];
}
return$result;
}
2.
/*调用输出验证码图片函数*/
getAuthImage($checkcode,160,40);
/**
*生成验证码图片
*@paramstring$text验证码字符
*/
functiongetAuthImage($text,$w,$y){
/*设置图片的宽度和高度*/
$im_x=$w;
$im_y=$y;
/*创建图片*/
$im=imagecreatetruecolor($im_x,$im_y);
$text_c=ImageColorAllocate($im,mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));
$tmpC0=mt_rand(100,255);
$tmpC1=mt_rand(100,255);
$tmpC2=mt_rand(100,255);
$buttum_c=ImageColorAllocate($im,$tmpC0,$tmpC1,$tmpC2);
imagefill($im,16,13,$buttum_c);
3.
/*字体文件*/
$font='t1.ttf';
for($i=0;$i<strlen($text);$i++)
{
$tmp=substr($text,$i,1);
$array=array(-1,1);
$p=array_rand($array);
$an=$array[$p]*mt_rand(1,10);//角度
$size=28;
imagettftext($im,$size,$an,15+$i*$size,35,$text_c,$font,$tmp);
}
/*将字符写入文件中*/
$distortion_im=imagecreatetruecolor($im_x,$im_y);
imagefill($distortion_im,16,13,$buttum_c);
for($i=0;$i<$im_x;$i++){
for($j=0;$j<$im_y;$j++){
$rgb=imagecolorat($im,$i,$j);
if((int)($i+20+sin($j/$im_y*2*M_PI)*10)<=imagesx($distortion_im)&&(int)($i+20+sin($j/$im_y*2*M_PI)*10)>=0){
imagesetpixel($distortion_im,(int)($i+10+sin($j/$im_y*2*M_PI-M_PI*0.1)*4),$j,$rgb);
}
}
}
4.
/*干扰元素点的数量*/
$count=160;
/*创建干扰元素点*/
for($i=0;$i<$count;$i++){
$randcolor=ImageColorallocate($distortion_im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imagesetpixel($distortion_im,mt_rand()%$im_x,mt_rand()%$im_y,$randcolor);
}
/*创建干扰线条*/
$rand=mt_rand(5,30);
$rand1=mt_rand(15,25);
$rand2=mt_rand(5,10);
for($yy=$rand;$yy<=+$rand+2;$yy++){
for($px=-80;$px<=80;$px=$px+0.1)
{
$x=$px/$rand1;
if($x!=0)
{
$y=sin($x);
}
$py=$y*$rand2;
imagesetpixel($distortion_im,$px+80,$py+$yy,$text_c);
}
}
5.
/*以PNG格式将图像输出到浏览器*/
ImagePNG($distortion_im);
/*销毁图像*/
ImageDestroy($distortion_im);
ImageDestroy($im);
④ php怎么实现验证码的
验证码功能机制实现思路
常规的验证码实现:
a、产生一张png的图片
b、为图片设置背景色
c、设置字体颜色和样式
d、产生4位数的随机的验证码
e、把产生的每个字符调整旋转角度和位置画到png图片上
f、加入噪点和干扰线防止注册机器分析原图片来恶意注册
g、输出图片
h、释放图片所占内存
i、将验证码保存到session或是数据库
j、将和输入的验证码进行对比短信(邮箱)验证码机制:
a、产生4-6位数的随机的验证码
b、把产生的每个字符保存到session或是数据库
c、将验证码发送到用户的手机(邮箱)
d、用户在规定时间内进行输入
e、将验证码从session或是数据库中取出
f、将和输入的验证码进行对比验证
⑤ 修改获取验证码图片到本地的PHP程序
最近项目不是很大,所以时间比较的空间,昨天琢磨着写点东西,想起了前几天电信公司投票选微笑天使的活动,投票是要填写验证码的,想了下想写个投票作弊程序,可是等我放假回来,人家活动已经结束了,昨天突然想起来,就写了一个获取验证码图片到本地的PHP程序,以备今后有类似的投票活动可以直接拿来使用。
程序采用了PHP的GD库,原理很简单,就是先建立一张空白图片,然后把验证码的图片使用PHP
GD库中的imagecreatefromjpeg函数建立一个image对象,最后计算图片的长宽,再次使用PHP内置的image复制到一开始建立的空白图片上去。
全部代码如下:
header("Content-type:image/png");
set_time_limit(0);//设置PHP超时时间
$url
=
$_GET['url'];
$url
=
"http://vcer..com/verify";
$imginfo
=
GetImageSize
(
$url
);
$imgw
=
$imginfo
[0];
$imgh
=
$imginfo
[1];
$bg
=
imagecreatetruecolor($imgw,$imgh);
$image
=
imagecreatefromjpeg($url);
imagecolorallocate($image,255,255,255);
image($bg,$image,0,0,
0,0,$imgw,$imgh);
imagedestroy($image);
ImagePng($bg);
此处的代码支持验证码格式为jpg的格式,如果是png或者gif的格式可以参考第二页。
通过上一页一个获取验证码图片到本地的PHP程序,对于验证码为jpg格式的图片是可以正常输出的,对于png、gif的验证码则不能正常使用,今天稍微修改一下PHP代码,使其可以支持png、gif、jpg三种格式的验证码。
PHP判断图片的格式可使用php内置的exif_imagetype函数,非常方便,
关于exif_imagetype的详细使用方法可以访问:http://php.net/manual/en/function.exif-imagetype.php
header("Content-type:image/png");
set_time_limit(0);//设置PHP超时时间
$url
=
$_GET['url'];
$url
=
"http://vcer..com/verify";
if(empty($url)){
echo
"没有图片";
die;
}
$imginfo
=
GetImageSize
(
$url
);
$type
=
exif_imagetype($url);
$imgw
=
$imginfo
[0];
$imgh
=
$imginfo
[1];
$bg
=
imagecreatetruecolor($imgw,$imgh);
if($type==IMAGETYPE_GIF){
$image
=
imagecreatefromgif($url);
}elseif($type==IMAGETYPE_JPEG){
$image
=
imagecreatefromjpeg($url);
}elseif($type==IMAGETYPE_PNG){
$image
=
imagecreatefrompng($url);
}
imagecolorallocate($image,255,255,255);
image($bg,$image,0,0,
0,0,$imgw,$imgh);
imagedestroy($image);
ImagePng($bg);
⑥ 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 怎么获取验证码的值
$_SESSION["vcode"] = $vcode;
验证码的值就在 $_SESSION["vcode"] 里面。
⑧ 下面段php代码怎么得到验证码的值啊(在页面里面直接输出就可以)。
最后两句:
$name=$_SESSION[ 'str'];
echo $name;
去掉,因为这个php实际上表现为一个图片,你echo是不会有值的
最后填一句 $_SESSION[ 'str'] = $str;
把这个文件保存为checkimg.php
然后,新建一个同级目录下的php文件
a.php 如下:
<?php
session_start();
?>
<img src="checkimg.php"/>
验证码是:
<?
echo $_SESSION["str"];
?>
⑨ php验证码
你把下面语句修改一下:
echo"验证码不正确";//否则输出失败
增加调试信息,修改后如下:
echo"验证码不正确(str=$_SESSION[str],name=$name)";//否则输出失败
看看输出的信息是什么,然后就容易知道结果了。
⑩ php 怎么获取验证码的值,接着怎么写
验证码一般都保存在session中,打印一下session的值,就能看到验证码对应的字段、值;
mp($_SESSION);