$_SESSION['uniqid']=$_uniqid=sha1(uniqid(rand(),true));这个$_SESSION['uniqid']和$_uniqid
这个不是必然相等吗。。为什么我看到他是判断$_SESSION['uniqid']和$_uniqid
的值是不是一样的来判断是否是正常注册。
$_uniqid是表单中隐藏域的值
和验证码差不多一个意思吧。。客户端有可能修改过这个值。可以增加别人用curl进行模拟登陆的难度
1.首先先申明一个函数
/**
* _check_uniqid
* @param unknown_type $_first_uniqid
* @param unknown_type $_end_uniqid
*/
function _check_uniqid($_first_uniqid,$_end_uniqid) {
if ((strlen($_first_uniqid) != 40) || ($_first_uniqid != $_end_uniqid)) {
_alert_back('唯一标识符异常');
}
return _mysql_string($_first_uniqid);
}
2.在代码中调用该函数
//判断是否提交了
if ($_GET['action'] == 'register') {
//为了防止恶意注册,跨站攻击
_check_code($_POST['code'],$_SESSION['code']);
//引入验证文件
include ROOT_PATH.'includes/register.func.php';
//创建一个空数组,用来存放提交过来的合法数据
$_clean = array();
//可以通过唯一标识符来防止恶意注册,伪装表单跨站攻击等。
//这个存放入数据库的唯一标识符还有第二个用处,就是登录cookies验证
$_clean['uniqid'] = _check_uniqid($_POST['uniqid'],$_SESSION['uniqid']);
//active也是一个唯一标识符,用来刚注册的用户进行激活处理,方可登录。
$_clean['active'] = _sha1_uniqid();
print_r($_clean);
} else {
$_SESSION['uniqid'] = $_uniqid = _sha1_uniqid();
}
3.在global.func.php调用
function _sha1_uniqid() {
return _mysql_string(sha1(uniqid(rand(),true)));
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。