我看了一下代码,相关判断代码
bbs2www/phplib/phpbbs.reg.c,296行及以下:
//检查是否单子已经填过了
if ((fn = fopen("new_register", "r")) != NULL) {
while (fgets(genbuf, STRLEN, fn) != NULL) {
if ((ptr = strchr(genbuf, '\n')) != NULL)
*ptr = '\0';
if (strncmp(genbuf, "userid: ", 8) == 0 && strcmp(genbuf + 8, userid) == 0) {
fclose(fn);
RETURN_LONG(1);
}
}
fclose(fn);
}
按我的理解,这段代码的意思是如果new_register中存在userid,则返回值1,即注册单尚未处理。但是...现在这段代码好像没有起作用,在new_register中已经有某ID的时候,这个ID在web下仍然可以正常填写注册单,我测试了两次,导致的结果就是new_register中有了三个usernum和userid都相同的记录....-_-
但telnet下没有问题,注册单添了之后再去填就会提示注册单尚未处理,请等待
我找出来telnet部分判断的代码
src/userinfo.c,537行及以下:
if ((fn = fopen("new_register", "r")) != NULL) {
while (fgets(genbuf, STRLEN, fn) != NULL) {
if ((ptr = strchr(genbuf, '\n')) != NULL)
*ptr = '\0';
if (strncmp(genbuf, "userid: ", 8) == 0 && strcmp(genbuf + 8, getCurrentUser()->userid) == 0)
{
fclose(fn);
prints("站长尚未处理您的注册申请单, 请耐心等候.");
pressreturn();
return;
}
}
fclose(fn);
}
除了一点(userid和getCurrentUser()->userid),判断部分完全一致。
为什么web下的判断就不起作用呢?
【 在 roctall (蛇王阿奔) 的大作中提到: 】
: 现在web下注册用户,没有通过站务认证的,在个人参数设置菜单里有填写注册单这个选项
: 我用一个已经填写过注册单,正在等待站务认证的ID再次选择这个项目,填写注册单提交
: 返回的提示是:
: ...................
--
FROM 221.192.220.*