慕用9300060
慕田峪6406328
这个问题解决了吗? 我也遇到了同样的情况
天雨潇潇
你的session没销毁吧?
qq_不舍i_1
刷新验证码有两种方式:
直接刷新页面, 你可以直接F5
是自己创建的html上的控件进行刷新, 自己定义好控件的onclick方法,使用JS将img的src换掉就可以直接刷新验证码了
一般情况下,验证码的制作和使用,都是选用第二种方法的, 因为第一种方法是直接刷新页面了, 如果你的页面中填写了很多信息,这样一刷就没了; 第二种是只刷新验证码的, 不会对页面的其他地方造成影响
都怪我不好
代码贴出来
livelove
$REQUEST 包含了$GET 和$POST,
慕的地3322389
你看下访问captcha.php能不能看到验证码,如果可以就是你图片路径不对,如果不能说明问题在captcha.php
慕村8501595
赞一个
我是大英雄
$_SESSION在php文件赋值,把验证码的信息存储在session里。在html页面判断输入的内容与session是否相等。
慕九州7824043
if(isset($_REQUEST['authcode'])){
if(strtolower($_REQUEST['authcode'])==$_SESSION['aothcode']){
<input type="text" name="authcode" value=""/></p>需要确定这三行的authcode是否相同。如果第二层判断里的request中的authcode这个单词和之前的不同了,就会undefined报错
陽光掉进古井
session是在同一浏览器中存在的。举个例子,我打开两个浏览器——IE和Google,分别进行你的操作,为这两个浏览器的表单填入对应的验证码,都可以通过。
so,只有在同一浏览器中才会存在session覆盖问题。
Only_L
晓得是什么原因了~
慕婉清3211295
传入r参数,后边给的是随机数,表示每次访问的url是不一样的。每个浏览器都会有自己的cookie存储时间,如果每次访问的url一样,浏览器会默认给你之前访问的页面,保证节省资源。
慕粉1454431280
php.ini里的配置已经按照提示的改了,并且重启了服务器,还是不行
慕粉1848421907
<img **省略**?r=<?php echo rand();?> **省略**>
视频里加的是一个随机数,我把它 理解为 img 图片的标记 “id”,給随机出来的验证码图片 做个记号罢了。

weixin_慕瓜6241313
$captch=$captch.$fontcontent
熊猫的家园
问题已经解决了
熊猫的家园
问题已解决
慕妹9324538
表单提交的地址有误?还是把代码贴出来看看比较准确
祯祺3362575
<image border='1' src='captcha.php' onclick="this.src='captcha.php?t=' + Math.random()" title="点击刷新"/> 他的本意应该是这么用的,这样的话,每点击图片一次都会重新生成新的验证码
KeviN_LE
可能没有安装emmet插件
所持随心
就是生成一个随机数作为这个链接的参数,实现验证码的更新。防止再次从缓存中获取。
xfy
是不是本地扩展没有打开?
爱踢球的小猪
文件保存也要为utf-8格式的 以无bom头格式的utf-8保存
幕布斯8326256
后面要加一个随机数是因为:生成一个随机数作为这个链接的参数,实现验证码的更新,防止再次从缓存中获取(你点击浏览器后退键就知道大概什么作用了,你点击后退会发现输入验证码内容框输入的值还是之前的,但是验证码图片的值之前浏览历史数据是不一样的)。
notmatter
我,加了 换一个 以后又出不来了
应该只是form改了一点吧,我看不出,你再帮我看看白,两个都贴上好了
<?php
session_start();
$image=imagecreatetruecolor(100,30);//创建一个宽100,高30的图片
$bgcolor=imagecolorallocate($image,255,255,255);
imagefill($image,0,0,$bgcolor);//将白色$bgcolor填充底图,从左上角填充到右上角
/*
for($i=0;$i<4;$i++) //增加数字
{
$fontsize=6;//定义数字的字体大小
$fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));//在这张图片资源上申请一个颜色,就是数字的颜色
$fontcontent=rand(0,9);//数字的内容,随机生成0-9
$x=($i*100/4)+rand(5,10);//坐标来标识随机数字写在哪里
$y=rand(5,10);
imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);//在$image的图像资源上,画随机数字
}
*/
$captch_code='';
for($i=0;$i<4;$i++)//增加字母和数字
{
$fontsize=6;
$fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
$data='abcdefghijkmnpqrstuvwxyz23456789';
$fontcontent=substr($data,rand(0,strlen($data)),1);
$captch_code.=$fontcontent; //将生成的内容加入到空字符$captch_code中
$x=($i*100/4)+rand(5,10);
$y=rand(5,10);
imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}
$_SESSION['authcode']=$captch_code;
for($i=0;$i<200;$i++)//增加200个以内的随机点
{
$pointcolor=imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));//生成点的颜色
imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);//
}
for($i=0;$i<3;$i++)//增加线
{
$linecolor=imagecolorallocate($image,rand(80,220),rand(80,220),rand(80,220));
imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);
}
header('content-type: image/png');//表明输出内容的格式
imagepng($image);//输出&image
//end
imagedestroy($image);//销毁&image
?>
<?php
header("content-type:text/html;charset=gb2312");
if(isset($_REQUEST['authcode'])){
session_start();
if(strtolower($_REQUEST['authcode'])==$_SESSION['authcode']){
echo '<font color="#0000CC">输入正确</font>';
}else{
echo '<font color="#CC0000"><b>输入错误</b></font>';
}
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>确认验证码</title>
</head>
<body>
<form method="post" action="./form.php">
<p>
验证码图片:
<img id="captcha_img" border="1" src="./captcha.php?r=<?php echo rand();?>" width="100" height="30"/>
<a href="javascript:void(0)" onclick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">换一个?</a>
</p>
<p>请输入图片中的内容: <input type="text" name="authcode" value=""/></p>
<p><input type="submit" value="提交" style="padding:6px 20px;"></p>
</form>
</body>
</html>
notmatter
本来已经出来了,加了 换一个 以后又出不来了,这是我的captcha和form代码,应该是form有问题
<?php
session_start();
$image=imagecreatetruecolor(100,30);//创建一个宽100,高30的图片
$bgcolor=imagecolorallocate($image,255,255,255);
imagefill($image,0,0,$bgcolor);//将白色$bgcolor填充底图,从左上角填充到右上角
/*
for($i=0;$i<4;$i++) //增加数字
{
$fontsize=6;//定义数字的字体大小
$fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));//在这张图片资源上申请一个颜色,就是数字的颜色
$fontcontent=rand(0,9);//数字的内容,随机生成0-9
$x=($i*100/4)+rand(5,10);//坐标来标识随机数字写在哪里
$y=rand(5,10);
imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);//在$image的图像资源上,画随机数字
}
*/
$captch_code='';
for($i=0;$i<4;$i++)//增加字母和数字
{
$fontsize=6;
$fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
$data='abcdefghijkmnpqrstuvwxyz23456789';
$fontcontent=substr($data,rand(0,strlen($data)),1);
$captch_code.=$fontcontent; //将生成的内容加入到空字符$captch_code中
$x=($i*100/4)+rand(5,10);
$y=rand(5,10);
imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}
$_SESSION['authcode']=$captch_code;
for($i=0;$i<200;$i++)//增加200个以内的随机点
{
$pointcolor=imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));//生成点的颜色
imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);//
}
for($i=0;$i<3;$i++)//增加线
{
$linecolor=imagecolorallocate($image,rand(80,220),rand(80,220),rand(80,220));
imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);
}
header('content-type: image/png');//表明输出内容的格式
imagepng($image);//输出&image
//end
imagedestroy($image);//销毁&image
?>
<?php
header("content-type:text/html;charset=gb2312");
if(isset($_REQUEST['authcode'])){
session_start();
if(strtolower($_REQUEST['authcode'])==$_SESSION['authcode']){
echo '<font color="#0000CC">输入正确</font>';
}else{
echo '<font color="#CC0000"><b>输入错误</b></font>';
}
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>确认验证码</title>
</head>
<body>
<form method="post" action="./form.php">
<p>
验证码图片:
<img id="captcha_img" border="1" src="./captcha.php?r=<?php echo rand();?>" width="100" height="30"/>
<a href="javascript:void(0)" onclick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">换一个?</a>
</p>
<p>请输入图片中的内容: <input type="text" name="authcode" value=""/></p>
<p><input type="submit" value="提交" style="padding:6px 20px;"></p>
</form>
</body>
</html>
大神的菜鸟
贴出代码来才知道哪里有问题
大神的菜鸟
哈哈 我找到问题了 r前面少了一个问号
qq_糖糖_10
路径参数分隔符,?后面跟参数,你应该在很多链接里都能看到的