diff options
author | in2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-03-02 20:06:31 +0800 |
---|---|---|
committer | in2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-03-02 20:06:31 +0800 |
commit | 11dd289ca94895698659e94a462457c75733331b (patch) | |
tree | 09af0ad54ac55bd9d9c55ae02762c0b562f13bd2 /mbbsd | |
parent | 2b6bc05af8cee0ee3db2bda82f35282071c76280 (diff) | |
download | pttbbs-11dd289ca94895698659e94a462457c75733331b.tar pttbbs-11dd289ca94895698659e94a462457c75733331b.tar.gz pttbbs-11dd289ca94895698659e94a462457c75733331b.tar.bz2 pttbbs-11dd289ca94895698659e94a462457c75733331b.tar.lz pttbbs-11dd289ca94895698659e94a462457c75733331b.tar.xz pttbbs-11dd289ca94895698659e94a462457c75733331b.tar.zst pttbbs-11dd289ca94895698659e94a462457c75733331b.zip |
register
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@1575 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd')
-rw-r--r-- | mbbsd/user.c | 63 |
1 files changed, 42 insertions, 21 deletions
diff --git a/mbbsd/user.c b/mbbsd/user.c index f48a5f4f..737a99b4 100644 --- a/mbbsd/user.c +++ b/mbbsd/user.c @@ -948,6 +948,10 @@ toregister(char *email, char *genbuf, char *phone, char *career, } clear(); stand_title("�{�ҳ]�w"); + if (cuser.userlevel & PERM_NOREGCODE){ + strcpy(email, "x"); + goto REGFORM2; + } move(2, 0); outs("�z�n, �����{�һ{�Ҫ��覡��:\n" " 1.�Y�z�� E-Mail (���������� yahoo, kimo���K�O�� E-Mail)\n" @@ -1002,6 +1006,7 @@ toregister(char *email, char *genbuf, char *phone, char *career, } } strncpy(cuser.email, email, sizeof(cuser.email)); + REGFORM2: if (strcasecmp(email, "x") == 0) { /* ��ʻ{�� */ if ((fn = fopen(fn_register, "a"))) { fprintf(fn, "num: %d, %s", usernum, ctime(&now)); @@ -1081,9 +1086,9 @@ static char *isvalidname(char *rname) { char *rejectstr[] = {"��", "�D", "���Y", "�p��", "�p��", "���H", "�Ѥ�", "�ѧ�", "�_��", - "����", "�v��", "���Y", "�p�n", "�p�j", "���k", "�p�f", "�j�Y", + "����", "�ӭ�", "���Y", "�p�n", "�p�j", "���k", "�p�f", "�j�Y", "���D", "�P��", "�_�_", "���l", "�j�Y", "�p�p", "�p��", "�p�f", - "�f�f", "�K", "��", + "�f�f", "�K", "��", "�ݷ�", "�j��", "�L", NULL}; if( removespace(rname) && rname[0] < 0 && strlen(rname) >= 4 && @@ -1103,8 +1108,11 @@ static char *isvalidcareer(char *career) strcmp(career, "�a��") == 0 || HaveRejectStr(career, rejectstr) ) return "�z����J�����T"; if (strcmp(&career[strlen(career) - 2], "�j") == 0 || - strcmp(&career[strlen(career) - 4], "�j��") == 0 ) + strcmp(&career[strlen(career) - 4], "�j��") == 0 || + strcmp(career, "�ǥͤj��") == 0) return "�·нХ[�Ǯըt��"; + if (strcmp(career, "�ǥͰ���") == 0) + return "�·п�J�ǮզW��"; return NULL; } @@ -1133,9 +1141,10 @@ static char *isvalidaddr(char *addr) static char *isvalidphone(char *phone) { - if (strstr(phone, "(") || strstr(phone, ")") || strstr(phone, "-")){ - return "�q�ܽФ��[ ( ) - �Ÿ�"; - } + int i; + for( i = 0 ; phone[i] != 0 ; ++i ) + if( !isdigit(phone[i]) ) + return "�Ф��n�[���j�Ÿ�"; if (!removespace(phone) || phone[0] != '0' || strlen(phone) < 9 || phone[1] == '0' || strstr(phone, "00000000") != NULL || @@ -1206,6 +1215,11 @@ u_register(void) fclose(fn); } + if (cuser.userlevel & PERM_NOREGCODE) { + vmsg("�z���Q���\\�ϥλ{�ҽX�{�ҡC�ж�g���U�ӽг�"); + goto REGFORM; + } + if (cuser.year != 0 && /* �w�g�Ĥ@����L�F~ ^^" */ strcmp(cuser.email, "x") != 0 && /* �W����ʻ{�ҥ��� */ strcmp(cuser.email, "X") != 0) { @@ -1213,20 +1227,23 @@ u_register(void) stand_title("EMail�{��"); move(2, 0); prints("%s(%s) �z�n�A�п�J�z���{�ҽX�C\n" - "�αz�i�H��J x�ӭ��s��g E-Mail �Χ�ѯ�����ʻ{��", + "�αz�i�H��J x�ӭ��s��g E-Mail �Χ�ѯ�����ʻ{��\n", cuser.userid, cuser.username); inregcode[0] = 0; - getdata(10, 0, "�z����J: ", inregcode, sizeof(inregcode), DOECHO); + do{ + getdata(10, 0, "�z����J: ", inregcode, sizeof(inregcode), DOECHO); + if( strcmp(inregcode, "x") == 0 || + strcmp(inregcode, "X") == 0 || + strlen(inregcode) == 13 ) + break; + if( strlen(inregcode) != 13 ) + vmsg("�{�ҽX��J�������A���Ӥ@�@���Q�T�X�C"); + } while( 1 ); + if (strcmp(inregcode, getregcode(regcode)) == 0) { int unum; - if (cuser.userlevel & PERM_NOREGCODE) { - prints("�z���Q���\\�H�{�ҽX�b�����{�ҡA�Ч�Τ�ʻ{�ҡC\n�����N�������C"); - pressanykey(); - exit(0); - } if ((unum = getuser(cuser.userid)) == 0) { - outs("�t�ο��~�A�d�L���H\n\n"); - pressanykey(); + vmsg("�t�ο��~�A�d�L���H�I"); u_exit("getuser error"); exit(0); } @@ -1242,15 +1259,17 @@ u_register(void) u_exit("registed"); exit(0); return QUIT; - } else if (strcmp(inregcode, "x") != 0 && strcmp(inregcode, "X") != 0) { - outs("�{�ҽX���~\n"); - pressanykey(); + } else if (strcmp(inregcode, "x") != 0 && + strcmp(inregcode, "X") != 0) { + vmsg("�{�ҽX���~�I"); } else { - toregister(email, genbuf, phone, career, ident, rname, addr, mobile); + toregister(email, genbuf, phone, career, + ident, rname, addr, mobile); return FULLUPDATE; } } + REGFORM: getdata(b_lines - 1, 0, "�z�T�w�n��g���U���(Y/N)�H[N] ", ans, sizeof(ans), LCECHO); if (ans[0] != 'y') @@ -1311,9 +1330,11 @@ u_register(void) vmsg(errcode); } - move(7, 0); + move(6, 0); prints("�·бz�ɶq�ԲӪ���g�z���A�ȳ��, �j�M�|�սг·�" - "�[�t��, ���q���Х[¾��"); + "�[\033[1;33m�t��\033[m, ���q���Х[¾��\n" + "�Ф��n��²�g�H�K�y���~�| :)" + ); while (1) { getfield(9, "�Ǯ�(�t\033[1;33m�t�Ҧ~��\033[m)�γ��¾��", "�A�ȳ��", career, 40); |