在phpbbslib中加了以下东西,目的是在web下填写注册单之前检验一下其注册单的状态。
避免用户重复提交表单~
static PHP_FUNCTION(bbs_checkregform);
PHP_FE(bbs_checkregform,NULL)
都定义对了的。
/**
* Function: Check registry form
* @return the result
* 1 -- 用户不存在
* 2 -- 用户已经通过注册
* 3 -- 注册单尚未处理
*/
static PHP_FUNCTION(bbs_checkregform)
{
char* userid;
int userid_len;
int ac = ZEND_NUM_ARGS();
struct userec* uc;
FILE* fn;
char genbuf[STRLEN+1];
char* ptr;
//检查用户是否已经通过注册或者还不到时间(先放到这里,最好放到php里面)
if(ac != 1 || zend_parse_parameters(1 TSRMLS_CC,"s", &userid,&userid_len) ==FAILURE){
WRONG_PARAM_COUNT;
}
if(getuser(userid,&uc) == 0)RETURN_LONG(1);
if(HAS_PERM(uc,PERM_LOGINOK))RETURN_LONG(2);
/* remed by roy 2003.7.17
if(time(NULL) - uc->firstlogin < REGISTER_WAIT_TIME)RETURN_LONG(5);
*/
//检查是否单子已经填过了
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(3);
}
}
fclose(fn);
}
}
可是用
$bbsfillformreg="test:)"
$ret=bbs_checkregform($userid);//自动生成注册单
switch($ret)
{
case 1:
html_error_quit("该用户不存在!");
break;
case 2:
html_error_quit("你已经通过注册了!");
break;
case 3:
html_error_quit("您的注册单还没有处理,请耐心等候");
break;
default:
echo ("$bbsfillformreg");
break;
}
如果用户登陆以后就只显示一个5,
大牛来指导一下可以吗~
觉得很奇怪~
--
FROM 202.115.112.*