通过session会话,php生成的验证码点击就可以刷新,为什么?

通过php生成验证码,然后用img标签输出。

请问,为什么有session_start()的话,onclick事件这样写,点击就会有刷新验证码的效果?(会出现新的验证码)
没有session会话,点击无效。

html代码

<img src="verifyCode.php" onclick="this.src='verifyCode.php'"/>

php

//省略验证码生成代码...

imagepng($image);//输出图片

session_start();//开始会话
阅读 3.7k
3 个回答

onclick="this.src='verifyCode.php?id='+Math_random()"/>
这样应该就行了。给图片加个随机数,每次生成的都不一样 就能刷新了

新手上路,请多包涵

这段代码session_start()是不是在图片制作之前?
如果是之前的话,一般制作画布的时候需要注入验证信息到$_SESSION,可能因为没有开启session导致注入失败,终止制作验证码图片。

利用session来校验图形验证码,一般的原理是先在session里面存储当前的验证码a,再通过a来生成图形验证码,并返回给客户端。 客户端通过输入验证码a给服务器,服务器再根据当前session存储的数据进行校验。

如果你用的是这种方法,又没有启用session,就没办法在session里对验证码a进行存储替换,当然会出错。
(备注:图片的输出和session的启用无关)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题