本帖最后由 mclubing 于 2012-06-14 16:13:53 编辑
下面是前端代码
全球通俱乐部 全球通俱乐部会所后台 会所账号:
密码:
验证码:
回复讨论(解决方案) 真有意思,楼主这脑子把自己绕糊涂了吧。
你这个网页要session干什么?
验证码图片里有做session,提交表单的页面用session,你在这个页面里放个session是想证明你一脑子浆糊吗。
不管楼主想有什么需求吧,先看看问题
while(($authnum=rand()%100000)<10000);
$_session['authnum']=$authnum;
这就说明session变量的赋值是有条件的,当你产生的随机数不满足条件时,authnum还是上一次保存下来的,但后面的代码依旧输出,所以输出的肯定不会同步。
php code
session_start();//将随机数存入session中
srand((double)microtime()*1000000);//播下一个生成随机数字的种子,以方便下面随机数生成的使用
$im = imagecreate(62,20); //制定图片背景大小
$black = imagecoloralloca……
运行先后的问题。每次刷新取的都是上一次的 $authnum 自己琢磨就明白了。
好多混的.个别才是认真答题的.
明白楼主的意思了。 // 楼主是不是理解为 //此td先执行,那么肯定session 也改变了。然后 //上面session肯定也是td里的session//------------------------------------------------------//其实你可以做个测试,按你的理解,td上面放 echo session和下面放 echo session 肯定是不一样的//那么你在td上面也放一个,看看他们是否不一致。
明白楼主的意思了。php code
// 楼主是不是理解为
好的,我试一下. 引用 5 楼 的回复:
明白楼主的意思了。php code
// 楼主是不是理解为
还是一样。 前端代码
session_start();//取得 session 变量值
....
echo $_session['authnum'];//这里输出的是上面取到的
这个工作是在整个前端代码未到达浏览器时就已经完成了
而
中的 checkcode.php 是在浏览器读取图片时才访问的
很明显,checkcode.php 中产生的 session 数据要晚于你在页面显示的
前端代码
session_start();//取得 session 变量值
....
echo $_session['authnum'];//这里输出的是上面取到的
这个工作是在整个前端代码未到达浏览器时就已经完成了
而
如何解决?
我原来也碰过这个问题,后来解决了,但是不记得是改了哪里。
生成验证码yzm.php
前台
验证码判断
我要评价:
请输入验证码:
楼主可以对照一下,看下问题在哪里
应该是要把表单提交时获得正确的验证码
应该是要把表单提交时获得正确的验证码
我已经知道错在哪,但是我不知道怎么解决,错误原因是因为browser先加载完成html代码,然后再加载图片,所以会出现慢图片一拍的原因,因为图片是在session后面加载的.
引用 11 楼 的回复:
应该是要把表单提交时获得正确的验证码
我已经知道错在哪,但是我不知道怎么解决,错误原因是因为browser先加载完成html代码,然后再加载图片,所以会出现慢图片一拍的原因,因为图片是在session后面加载的.
你为什么需要知道当前图片的信息呢?你做验证码应该是验证输入的验证码和图片中的是否一致,只要提交表单就可以判断了,难道你不是这个需求?
mark明天上班看。
引用 14 楼 的回复:
引用 11 楼 的回复:
应该是要把表单提交时获得正确的验证码
我已经知道错在哪,但是我不知道怎么解决,错误原因是因为browser先加载完成html代码,然后再加载图片,所以会出现慢图片一拍的原因,因为图片是在session后面加载的.
你为什么需要知道当前图片的信息呢?你做验证码应该是验证输入的验证码和图片中的是否一致,只要提交表单就……
前台ajax
就是会慢一拍,是用错了,如果验证码在html页面中引用,而此时又用php输出,那么页面的就比php输出的快,这是用错了,
if($_server[request_method] == post)
{
echo 提交到服务器了 .$_session[verifycode] .这是填写的.$_post[getcode];
}
这样就同步了,是html的验证码,和回发后的session相同。验证是否两者相等,这才对
也碰到了类似的问题,
把表单验证信息提交到 另一个页面进行验证。不要在本页进行。