telnet新用户注册及审批过程:
以new登陆时,由src/newmain_single.c中login_query()函数判断是否是new登陆,是,则调用src/register.c中的void new_register()函数处理。
void new_register()函数:
这个函数是写userec数据结构的内容,值得注意的是这里对userec.level和userec.userdefine[]字段内容的填充。userec.level=PERM_BASIC,也就是对新注册用户给予"b"权限。函数调用结束后,程序返回login_query()处,建立新用户的BBS主目录和BBS邮件目录,并以DELIVER邮寄"致新注册用户的信"。接下来进入src/newmain_single.c中void user_login()函数的处理:对于新注册用户来说,这里主要是调用check_register_info()函数的处理。
src/newmain_single.c中check_register_info()函数:对于新注册用户,这里执行填写昵称、生日、详细地址,学校系级或单位全称,联系电话等等内容,这些都是对userdata数据结构的内容的填写。接下来如果定义了NEW_COMERS,则在newcomers版自动发文。然后判断用户是否有PERM_LOGINOK权限,如果没有则调用invalid_realmail函数判断用户是否通过注册单审批(若通过注册单审批,则说明该用户是通过注册单审批之后第一次登陆,此时给予该用户PERM_DEFAULT)src/newmain_single.c中int invalid_realmail(userid, email, msize)判断是否通过注册单审批。这个函数就是察看userdata数据结构中userdata.realemail字段,根据其内容判断该用户是否通过注册单审批,如何判断,在后面说明。如果没有PERM_LOGINOK则输出"您现在还没有通过身份认证,没有talk,mail,message,post等权限。"等提示信息
填写注册单:
这部分由src/userinfo.c中void x_fillform()函数完成:判断($BBSHOME)/new_register文件中是否有该ID的注册单信息,如果没有则该用户根据提示输入相应的信息,这些信息被写入userdata数据结构相应的各个域(realname,address,career,phone,birthday等),并写入用户BBS主目录中的.userdata文件和usermemo文件(userdata数据结构要与usermemo的内容保持一致)和($BBSHOME)/new_register(存放新填写注册单用户的注册单内容的信息)文件
注册单审批:
主要工作由src/maintain.c中int scan_register_form(logfile, regfile)函数完成:主要作用就是根据($BBSHOME)/new_register文件中的新填写注册单的内容,由账号管理员来审批注册单(即"是否接受此资料 (Y/N/Q/Del/Skip)? [S]: ")。当"Y"后,userdata.realemail字段被写入"服务单位$联系电话@账号管理员ID",这也是invalid_realmail函数判断用户是否通过注册单审批的依据。接下来是给通过审批的用户发信,最后是将用户信息,包括userdata.realemail的内容写入用户BBS主目录的register文件,和($BBSHOME)register.list文件
【 在 ukbee (ukbee) 的大作中提到: 】
: 先提前谢谢了
--
修改:Netac FROM 218.249.29.*
FROM 218.249.29.*