关于生成验证码的,首先看生成页,这一页基本上是照搬的。没动。$w = 80;
$h = 26;
$str = Array();
$string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for($i = 0;$i < 4;$i++){
$str[$i] = $string[rand(0,35)];
$vcode .= $str[$i];
}
session_start();
session_register("vcode");
$im = imagecreatetruecolor($w,$h);
$white = imagecolorallocate($im,255,255,255);
$black = imagecolorallocate($im,0,0,0);
imagefilledrectangle($im,0,0,$w,$h,$white);
imagerectangle($im,0,0,$w-1,$h-1,$black);
for($i = 1;$i < 200;$i++){
$x = mt_rand(1,$w-9);
$y = mt_rand(1,$h-9);
$color = imagecolorallocate($im,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
imagechar($im,1,$x,$y,"*",$color);
}
for($i = 0;$i < count($str);$i++){
$x = 13 + $i * ($w - 15)/4;
$y = mt_rand(3,$h / 3);
$color = imagecolorallocate($im,mt_rand(0,225),mt_rand(0,150),mt_rand(0,225));
imagechar($im,5,$x,$y,$str[$i],$color);
}
header("Content-type:image/jpeg");
imagejpeg($im);
imagedestroy($im);展示与验证在同一页代码如下<?php
session_start();
if (isset($vcode) && isset($_GET["vcodes"]))
{
echo $vcode;
echo $_GET["vcodes"];
if($_SESSION["vcode"]==$_GET["vcodes"])
{}
else
{echo '验证码错误';}
}
?>
<img src="plugins/verifycode.php" style="cursor:pointer;" onclick="this.src='plugins/verifycode.php?t='+Math.random()+'';" title="点击换一个" >我说下,这个$vcode是验证码的正确值session传递,$vcodes是页面表单传过来的。现在的问题是
为什么我点击图片更换了验证码$vcode的值都不变呢?只有重新开启浏览器才会改变。验证码图片正常变化。是不是倒地时那儿的问题呢?
$h = 26;
$str = Array();
$string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for($i = 0;$i < 4;$i++){
$str[$i] = $string[rand(0,35)];
$vcode .= $str[$i];
}
session_start();
session_register("vcode");
$im = imagecreatetruecolor($w,$h);
$white = imagecolorallocate($im,255,255,255);
$black = imagecolorallocate($im,0,0,0);
imagefilledrectangle($im,0,0,$w,$h,$white);
imagerectangle($im,0,0,$w-1,$h-1,$black);
for($i = 1;$i < 200;$i++){
$x = mt_rand(1,$w-9);
$y = mt_rand(1,$h-9);
$color = imagecolorallocate($im,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
imagechar($im,1,$x,$y,"*",$color);
}
for($i = 0;$i < count($str);$i++){
$x = 13 + $i * ($w - 15)/4;
$y = mt_rand(3,$h / 3);
$color = imagecolorallocate($im,mt_rand(0,225),mt_rand(0,150),mt_rand(0,225));
imagechar($im,5,$x,$y,$str[$i],$color);
}
header("Content-type:image/jpeg");
imagejpeg($im);
imagedestroy($im);展示与验证在同一页代码如下<?php
session_start();
if (isset($vcode) && isset($_GET["vcodes"]))
{
echo $vcode;
echo $_GET["vcodes"];
if($_SESSION["vcode"]==$_GET["vcodes"])
{}
else
{echo '验证码错误';}
}
?>
<img src="plugins/verifycode.php" style="cursor:pointer;" onclick="this.src='plugins/verifycode.php?t='+Math.random()+'';" title="点击换一个" >我说下,这个$vcode是验证码的正确值session传递,$vcodes是页面表单传过来的。现在的问题是
为什么我点击图片更换了验证码$vcode的值都不变呢?只有重新开启浏览器才会改变。验证码图片正常变化。是不是倒地时那儿的问题呢?
解决方案 »
- 求教php老手,一个关于php代码执行顺序的问题,很纠结!
- 自循环函数 为什么不能用return?????
- smarty一简单问题
- Power PC+BOA+PHP+CGI环境 PHP(CGI模式)无法获取表单输入数据
- 换了份工作,二个月没上csdn,回来后真是开心!散分庆祝~~~
- 用js做了一个自动生成php代码的小程序,希望对大家有些用处
- 将一幅图片的一部分插入到另一图片上的程序怎么写?给分100
- mysql能改数据库的名字吗?怎么改啊?或者有什么变通的方法吗?
- 98系统如何运行PHP??
- 图片上传程序中的错误(mysql)?
- 自己的网站如何提供rss?
- php在Linux下怎么搭建环境啊?
<img src="plugins/verifycode.php" style="cursor:pointer;" onclick="this.setAttribute(src,'plugins/verifycode.php?'+Math.random());" title="点击换一个" >
把session_register("vcode");换成$_SESSION['vcode'] = $vcode;试下
在验证码页
<?php
session_start(); // 放到最前面
$w = 80;
$h = 26;
$str = Array();
$string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for($i = 0;$i < 4;$i++){
$str[$i] = $string[rand(0,35)];
$vcode .= $str[$i];
}
$_SESSION['vcode'] = $vcode; // 注册到session
$im = imagecreatetruecolor($w,$h);
$white = imagecolorallocate($im,255,255,255);
$black = imagecolorallocate($im,0,0,0);
imagefilledrectangle($im,0,0,$w,$h,$white);
imagerectangle($im,0,0,$w-1,$h-1,$black);
for($i = 1;$i < 200;$i++){
$x = mt_rand(1,$w-9);
$y = mt_rand(1,$h-9);
$color = imagecolorallocate($im,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
imagechar($im,1,$x,$y,"*",$color);
}
for($i = 0;$i < count($str);$i++){
$x = 13 + $i * ($w - 15)/4;
$y = mt_rand(3,$h / 3);
$color = imagecolorallocate($im,mt_rand(0,225),mt_rand(0,150),mt_rand(0,225));
imagechar($im,5,$x,$y,$str[$i],$color);
}
header("Content-type:image/jpeg");
imagejpeg($im);
imagedestroy($im);
?>显示验证页
<?php
session_start();
if (isset($_SESSION["vcode"]) && isset($_GET["vcodes"])){ //这里的判断条件
echo $_SESSION["vcode"];
echo $_GET["vcodes"];
if($_SESSION["vcode"]==$_GET["vcodes"]){
}else{
echo '验证码错误';
}
}
?>
<img src="plugins/verifycode.php" style="cursor:pointer;" onclick="this.setAttribute(src,'plugins/verifycode.php?'+Math.random());" title="点击换一个" >