回文章列表
作者LHD.bbs@LHD.twbbs.org (君シ笑ゲサゆギゆプ) 看板: itoc
標題Re: [問題] 動態設定使用者的看板權限...
時間遊民之家 (2008/06/09 Mon 03:04:05)
我是不太記得當年 XoPost 長怎樣
但現在的版本 因為在最前面就先判斷 currboard 沒換過就都不重設了
不改的話 那判斷 -1 等於沒用:~

: board.c:XoPost()

- if (currbno != bno)   /* 看板沒換通常是因為 every_Z() 回原看板 */
- {
#ifdef HAVE_MODERATED_BOARD
    if (!(bits & BRD_R_BIT))
    {
      vmsg("對不起,此板只准板友進入,請向板主申請入境許\可");
      return -1;
    }
#endif

    /* 處理權限 */
    bbstate = STAT_STARTED;
    if ((bits & BRD_M_BIT) && (bits & BRD_X_BIT))
....

#ifdef HAVE_MODERATED_BOARD
    if (brd->readlevel == PERM_SYSOP || brd->readlevel == PERM_BOARD)
      bbstate |= STAT_MODERATED;
#endif

+ if (currbno != bno)   /* 看板沒換通常是因為 every_Z() 回原看板 */
+ {

     mantime_add(currbno, bno);
...


現在 xover.c 那也要改一下

: xover.c:every_Z()

...

   if (cmd == XZ_POST)
-    XoPost(currbno);
+  {
+    if (XoPost(currbno) < 0)   /* 傳回-1 代表 無閱讀權限 */
+    {
+      z_status--;
+      return XO_FOOT;          /* 若在 xover() 中取消呼叫 every_Z() 則送回
 XO_FOOT 即可重繪 */
+    }
+  }

...

※ 引述《itoc.bbs@xeon.tfcis.org (核心動力)》之銘言:
> ※ 引述《cpd.bbs@pitch.twbbs.org (Seasons)》之銘言:
> > 要是 某看板 原本是 公開看板...guest上站後正在瀏覽該看板...
> > 板主將看板設為 好友 或 秘密 看板後...
> > 儘管 guest 已經退到主選單,但由於 guest 的 currboard 仍然為該看板...
> > 在分類及所有看板列表確實是沒辦法進入,並提示以下訊息...
> > "對不起,此板只准看板好友進入,請向板主申請入境許可"
> > 但 guest 卻可以在主選單 按 "r" xover(XZ_POST) 進入該看板...
> > 即使該看板已經被板主設為 好友 或 秘密 看板...
> > 我把 menu.c 中做點修改就不會了...或者說根本不用改這裡??@@"
>   你是對的 :)
>   同理,還有這裡
>   xover.c:every_Z()
>   case 'b':
>     if (xz[XZ_POST - XO_ZONE].xo) /* 若已選定看板,進入看板,否則到看板列表 */
>     {
> -     XoPost(currbno);
> +     if (XoPost(currbno) < 0)
> +       break;
>       cmd = XZ_POST;
>       break;
>     }


--
▃▄▅▆▇▅▄▃▂▁                ◣  ◢      █◣◢█ ●   bbs.cis95.net
▇▅▄▂▁ˍ▃▅▆   居無定所的雲   ◥█◤ ◤◥ █◥◤█ ▲ █▇◣ 遊民之家
飄自 blog.cs.nctu.edu.tw              █   ◣◢ █    █ █ █  █‧twbbs‧org
文章選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻