84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
通过php生成验证码,然后用img标签输出。
请问,为什么有session_start()的话,onclick事件这样写,点击就会有刷新验证码的效果?(会出现新的验证码)没有session会话,点击无效。
html代码
<img src="verifyCode.php" onclick="this.src='verifyCode.php'"/>
php
//省略验证码生成代码... imagepng($image);//输出图片 session_start();//开始会话
认证0级讲师
onclick="this.src='verifyCode.php?id='+Math_random()"/>这样应该就行了。给图片加个随机数,每次生成的都不一样 就能刷新了
这段代码session_start()是不是在图片制作之前?如果是之前的话,一般制作画布的时候需要注入验证信息到$_SESSION,可能因为没有开启session导致注入失败,终止制作验证码图片。
利用session来校验图形验证码,一般的原理是先在session里面存储当前的验证码a,再通过a来生成图形验证码,并返回给客户端。 客户端通过输入验证码a给服务器,服务器再根据当前session存储的数据进行校验。
如果你用的是这种方法,又没有启用session,就没办法在session里对验证码a进行存储替换,当然会出错。(备注:图片的输出和session的启用无关)
onclick="this.src='verifyCode.php?id='+Math_random()"/>
这样应该就行了。给图片加个随机数,每次生成的都不一样 就能刷新了
这段代码session_start()是不是在图片制作之前?
如果是之前的话,一般制作画布的时候需要注入验证信息到$_SESSION,可能因为没有开启session导致注入失败,终止制作验证码图片。
利用session来校验图形验证码,一般的原理是先在session里面存储当前的验证码a,再通过a来生成图形验证码,并返回给客户端。 客户端通过输入验证码a给服务器,服务器再根据当前session存储的数据进行校验。
如果你用的是这种方法,又没有启用session,就没办法在session里对验证码a进行存储替换,当然会出错。
(备注:图片的输出和session的启用无关)