回精華區
作者itoc.bbs@processor.tfcis.org (核心動力) 看板: plan
標題Re: 推薦人
時間動力核心 (2004/03/30 Tue 00:42:13) Updated: 2004/03/30
※ 引述《aling0306.bbs@fhbb.twbbs.org.tw (yenning~)》之銘言:
> 新使用者new 帳號時
> 填完所有資料後
> 會出現一個詢問視窗 "請輸入推薦你來這裡的人ID"
> 輸入被推薦人id後 會自動PO在一個板上

  註冊時填寫介紹人
  這功能用 HAVE_GUARANTOR 改寫即可:
  a) 拿掉檢查保人密碼的部分
  b) 新增將 log 記錄在特定看板

: config.h

#ifdef LOGINASNEW
- #undef  HAVE_GUARANTOR          /* itoc.000319: 採用保證人制度 */
+ #define HAVE_GUARANTOR          /* itoc.000319: 採用保證人制度 */
#endif

: bbsd.c:login_user()

      vget(b_lines - 2, 0, "   [您的保人] ", uid, IDLEN + 1, DOECHO);
      if (!*uid || (acct_load(&cuser, uid) < 0))
      {
        vmsg("抱歉,沒有介紹人不得加入本站");
      }
-     else if (!HAS_PERM(PERM_GUARANTOR))
-     {
-       vmsg("抱歉,您不夠資格擔任別人的介紹人");
-     }
-     else if (!vget(b_lines - 2, 40, "[保人密碼] ",
-       passbuf, PSWDLEN + 1, NOECHO))
-     {
-       continue;
-     }
      else
      {
-       if (chkpasswd(cuser.passwd, passbuf))
-       {
-         logattempt('-', content);
-         vmsg(ERR_PASSWD);
-       }
-       else
        {
          FILE *fp;
          char parentid[IDLEN + 1], buf[80];
          time_t now;
+         HDR hdr;
+         char folder[64];

  ...
  ...

          sprintf(buf, "%s 於 %s 介紹此人(%s)加入本站\n",
            parentid, Btime(&now), cuser.userid);
          usr_fpath(fpath, cuser.userid, "guarantor");
          if (fp = fopen(fpath, "a"))
          {
            fputs(buf, fp);
            fclose(fp);
          }
+         brd_fpath(folder, "sysop", fn_dir);        // 看板自定 
+         hdr_stamp(folder, HDR_COPY | 'A', &hdr, fpath);
+         strcpy(hdr.owner, parentid);
+         strcpy(hdr.nick, "介紹人");
+         sprintf(hdr.title, %s 介紹 %s 加入本站, parentid, cuser.userid);
+         rec_add(folder, &hdr, sizeof(HDR));
          sprintf(buf, "%s 於 %s 被此人(%s)介紹加入本站\n",
            cuser.userid, Btime(&now), parentid);


--
  Origin:  Maple-itoc˙動力核心  processor.tfcis.org 
  Author: itoc itoc.dorm11.nctu.edu.tw 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻