分享DEDECMS 验证码的一个细节有关问题。附提问一个疑惑,有关SE

fieldset{padding:10px;}

分享DEDECMS 验证码的一个细节问题。附提问一个疑惑,有关SESSION的

本帖最后由 default7 于 2012-12-01 15:54:51 编辑 问题:重复提交问题。表单提交成功了,发现页面单击右键点击返回上一页,浏览器提示“此页面不可用”,按下F5重新刷新,结果又提交成功了。导致“如果不停地刷新”就可以不停地提交成功!验证码的问题。代码:

if($dopost=='add'){$svali=GetCkVdValue();if(strtolower($vdcode)!=$svali||$svali==''){ResetVdValue();ShowMsg('验证码错误!','-1');exit();}}

解决:一开始以为是ResetVdValue();这个函数的问题,最后才发现是执行顺序的问题,把ResetVdValue();放到判断“提交的验证码是否正确”的代码之前就可以了。

if($dopost=='add'){$svali=GetCkVdValue();ResetVdValue();//位置移前if(strtolower($vdcode)!=$svali||$svali==''){ShowMsg('验证码错误!','-1');exit();}}

后来看了验证码方面的获取和销毁的函数,有一个疑问的地方:1.未改动前的文件:/include/common.func.php,函数GetCkVdValue()和ResetVdValue()

/***获取验证码的session值**@returnstring*/functionGetCkVdValue(){@session_id($_COOKIE['PHPSESSID']);@session_start();returnisset($_SESSION['securimage_code_value'])?$_SESSION['securimage_code_value']:'';}/***PHP某些版本有Bug,不能在同一作用域中同时读session并改注销它,因此调用后需执行本函数**@returnvoid*/functionResetVdValue(){@session_start();$_SESSION['securimage_code_value']='';}

2.未改动前的验证码生成程序:/include/vdimgck.php开头的地方有写

$sessSavePath=DEDEDATA."/sessions/";//Session保存路径if(is_writeable($sessSavePath)&&is_readable($sessSavePath)){session_save_path($sessSavePath);}if(!empty($cfg_domain_cookie))session_set_cookie_params(0,'/',$cfg_domain_cookie);session_start();

个人将代码修改成如下,文件/include/common.func.php

/***获取验证码的session值**@returnstring*/functionGetCkVdValue(){$sessSavePath=DEDEDATA."/sessions/";if(is_writeable($sessSavePath)&&is_readable($sessSavePath)){session_save_path($sessSavePath);}if(!empty($GLOBALS['cfg_domain_cookie']))session_set_cookie_params(0,'/',$GLOBALS['cfg_domain_cookie']);@session_id($_COOKIE['PHPSESSID']);@session_start();returnisset($_SESSION['securimage_code_value'])?$_SESSION['securimage_code_value']:'';}/***PHP某些版本有Bug,不能在同一作用域中同时读session并改注销它,因此调用后需执行本函数**@returnvoid*/functionResetVdValue(){$sessSavePath=DEDEDATA."/sessions/";if(is_writeable($sessSavePath)&&is_readable($sessSavePath)){session_save_path($sessSavePath);}成功是什么?就是走过了所有通向失败的路.只剩下一条路.那就是成功的路.

分享DEDECMS 验证码的一个细节有关问题。附提问一个疑惑,有关SE

相关文章:

你感兴趣的文章:

标签云: