[問題] 請教關於快速砍人的設定問題

phpBB 2 MOD Support
無論是官方或非官方認證之外掛,安裝與使用問題討論。
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

主題已鎖定
依夢兒
竹貓忠實會員
竹貓忠實會員
文章: 2013
註冊時間: 2002-11-20 00:07

[問題] 請教關於快速砍人的設定問題

文章 依夢兒 »

問題外掛:Prune users 1.4.3
     外掛可至這裡下載
使用版本:phpBB 2.0.17
狀況描述:

就是....我要如何修改,才可以達到以下的刪除效果:
最近 60 天內發文數少於 1 篇,除了註冊未滿 30 天的會員
我有將 admin_prune_users.php 裡面的 $default[4] = XX; 改為 60 ,但是跑出來的人數好像不太對。

另外,之前有一篇關於快速砍人時間修正的教學:
http://phpbb-tw.net/phpbb/viewtopic.php?p=184123#184123
請問是只要將 $sql [3] 的 user_lastvisit 改成 user_session_time 就好了嗎?
如果將所有 user_lastvisit 字串都覆蓋為 user_session_time 會不會比較好?
有任何關於 phpBB 或是架站的問題,請在論壇上公開發表出來,大家一起討論。
請不要丟私人訊息問我,因為私訊是用來聊私事的。
這樣作對於解決您的問題一點幫助也沒有,也很沒有效率,小弟我一概謝絕。



搜尋是一種美德,在發問之前,請多加利用頂端的文章搜尋功能,搜尋可能的關鍵字。
確定您想問的問題找不到答案後,再發問。
~倉木麻衣~
竹貓忠實會員
竹貓忠實會員
文章: 1405
註冊時間: 2004-03-21 21:00

Re: [問題] 請教關於快速砍人的設定問題

文章 ~倉木麻衣~ »

是否將所有的user_lastvisit都換成user_session_time是否會比較好, 則不是很肯定會比較好\r
因為現在還不能確定「從未登入」($sql [1])這部份是否會有誤判的問題
晚些做個實驗好了, 看註冊完後只登入過一次的使用者是否會判定成從未登入
最後由 ~倉木麻衣~ 於 2005-08-09 01:55 編輯,總共編輯了 1 次。
hpo14
竹貓忠實會員
竹貓忠實會員
文章: 414
註冊時間: 2003-05-10 16:37
來自: M Starbucks

文章 hpo14 »

我沒試過我給的作法, 我是剛剛看admin_prune_user.php打出來的..

代碼: 選擇全部

-----[ Open ] ------------------------------

admin / admin_prune_user.php

-----[ Search ] ------------------------------

// 
// Users with less than 0.1 posts per day avg. 
// 
$sql[4] = ' AND user_posts/((user_lastvisit - user_regdate)/86400) < "0.1"'; 
$default[4] =360;

-----[ Add on Next Line ] ------------------------------

// find users not visited since 60 days and post less than 1 posts
$sql [5] = ' AND user_posts="0" AND user_session_time<'.(time()-86400*60); 
$default [5] = 30;

-----[ Save & Open ] ------------------------------

language / lang_chinese_language_taiwan / lang_prune_users.php

-----[ Search ] ------------------------------

$lang['Prune_explain'][4] = '註冊後平均10天發表少於1篇文章的會員, <b>除了</b> 註冊未滿 %d 天的新會員例外。'; 

-----[ Add on Next Line  ] ------------------------------

$lang['Prune_commands'][5] = '刪除中期潛水的會員'; 
$lang['Prune_explain'][5] = '刪除60天發文數少於1篇的會員, <b>除了</b> 註冊未滿 %d 天的新會員例外。'; 

-----[ Save & Close ] ------------------------------
被我抓到 bug 了...竹貓的 code 標籤內 打 "開" , "加" 會有問題
被麻衣給先了....^^|||
我得作法好像有點簡潔...不知道會不會有問題就是了..

我沒動到 delete_users.php 不知道會不會有問題...
非官方外掛問題區公告: [必看]請配合發問格式及明確主題發問(2004 02/16更新)

竹貓星球發問規則:
http://phpbb-tw.net/phpbb/viewtopic.php?t=16149

請不要濫用 私人訊息 或是 MSN 問問題...你以為竹貓是架好看的阿
~倉木麻衣~
竹貓忠實會員
竹貓忠實會員
文章: 1405
註冊時間: 2004-03-21 21:00

文章 ~倉木麻衣~ »

hpo14 寫:被麻衣給先了....^^|||
我得作法好像有點簡潔...不知道會不會有問題就是了..

我沒動到 delete_users.php 不知道會不會有問題...
我發現我誤會依夢兒的意思了
所以先自爆原本文章中關於第一題的回答 :P

不過, 這句可能會有問題
$sql [5] = ' AND user_posts="0" AND user_session_time<'.(time()-86400*60);
原題目的要求是最近60天內的發文數量少於1
您的寫法看起來比較像是最近60天內完全沒發過文的
這可能會有問題產生
另外, 除了admin_prune_users.php外(這個只負責列出符合條件的人數), 記得也要修改delete_users.php哦(這個檔案才是真正執行砍人的動作)
依夢兒
竹貓忠實會員
竹貓忠實會員
文章: 2013
註冊時間: 2002-11-20 00:07

文章 依夢兒 »

~倉木麻衣~ 寫:是否將所有的user_lastvisit都換成user_session_time是否會比較好, 則不是很肯定會比較好
感謝指導,不過再請教一下,「最近 60 天內發文數少於 1 篇」的部分是要設定在哪裡呢?

hpo14 寫:我沒動到 delete_users.php 不知道會不會有問題...
照理說兩個檔案都要動到,才會有作用。

另外關於您提供的「AND user_posts="0" AND user_session_time<'.(time()-86400*60);」這一句。
從字面上來看,作用應該是「讓系統找出超過 60 天沒有登入而且發文數是 0 的會員」,沒錯吧?
不過我要的效果不是這樣,而是「讓系統找出超過 60 天沒有發文的會員」,兩者意思有差別喲!
如果是前者的話,系統找出的會員一定都是發文數 0 篇的會員。
然而有的老會員也許以前發文發的很勤,累積了上百篇的文章,現在雖然也有登入,但是就沒有再繼續發文了....
我現在希望快速砍人也能夠針對這一些會員動刀,我的意思是這樣的.... ^^"


看到倉木麻衣兄的回覆了....沒錯,我的意思正是如此。
看來這一個問題暫時是無解了.... ^^"
最後由 依夢兒 於 2005-08-09 02:12 編輯,總共編輯了 1 次。
有任何關於 phpBB 或是架站的問題,請在論壇上公開發表出來,大家一起討論。
請不要丟私人訊息問我,因為私訊是用來聊私事的。
這樣作對於解決您的問題一點幫助也沒有,也很沒有效率,小弟我一概謝絕。



搜尋是一種美德,在發問之前,請多加利用頂端的文章搜尋功能,搜尋可能的關鍵字。
確定您想問的問題找不到答案後,再發問。
hpo14
竹貓忠實會員
竹貓忠實會員
文章: 414
註冊時間: 2003-05-10 16:37
來自: M Starbucks

文章 hpo14 »

嗯嗯, 看來我沒做好檢查 (汗)...呵呵\r
-----[ Open ] ------------------------------

admin / admin_prune_user.php

-----[ Search ] ------------------------------

//
// Users with less than 0.1 posts per day avg.
//
$sql[4] = ' AND user_posts/((user_lastvisit - user_regdate)/86400) < "0.1"';
$default[4] =360;

-----[ Add on Next Line ] ------------------------------

// find users not visited since 60 days and post less than 1 posts
$sql [5] = ' AND user_posts<=1 AND user_session_time<'.(time()-86400*60);
$default [5] = 30;

-----[ Save & Open ] ------------------------------

language / lang_chinese_language_taiwan / lang_prune_users.php

-----[ Search ] ------------------------------

$lang['Prune_explain'][4] = '註冊後平均10天發表少於1篇文章的會員, <b>除了</b> 註冊未滿 %d 天的新會員例外。';

-----[ Add on Next Line ] ------------------------------

$lang['Prune_commands'][5] = '刪除中期潛水的會員';
$lang['Prune_explain'][5] = '刪除60天內發文數少於1篇的會員, <b>除了</b> 註冊未滿 %d 天的新會員例外。';

-----[ Save & Close ] ------------------------------
上面這樣應該沒錯了吧!....^^||
依夢兒, 你說你要的功能是60天內未發文
那在這60天是不管有沒有登入嗎?..

因為我是綜合 sql[1] 跟 sql[3] 寫出來的

代碼: 選擇全部

sql[1]是找出發文數為0的會員\r
sql[3]是找出60天內未登入的會員\r
上面這樣解釋對吧!
BTW, SQL 我不會寫, 如果麻衣大你會的話, 能麻煩妳幫寫一下嗎?
非官方外掛問題區公告: [必看]請配合發問格式及明確主題發問(2004 02/16更新)

竹貓星球發問規則:
http://phpbb-tw.net/phpbb/viewtopic.php?t=16149

請不要濫用 私人訊息 或是 MSN 問問題...你以為竹貓是架好看的阿
~倉木麻衣~
竹貓忠實會員
竹貓忠實會員
文章: 1405
註冊時間: 2004-03-21 21:00

文章 ~倉木麻衣~ »

AND user_posts<=1 這樣還是會有問題的:P
user_posts這個欄位是記錄使用者的發文數, 意即是從他註冊完成開始到目前為止的總發文數\r
所以單純要用user_posts來找出最近60天內有發表過文章的話, 是有難度存在的
因為, 使用者A可能60天前的發文總數為10篇, 但最近這60天內卻沒發表過文章
在此狀況下, 使用者A已符合了最近60天內發文少於一篇的條件\r
然而使用者A的user_posts等於10, 與您用來判斷的AND user_posts<=1並不符合

也許可以先透過SQL的count來統計60天前該使用者的發文數, 然後再將它與user_posts相減, 看結果是否大於1
但這個部份若再仔細分析的話, 還會遇到另一個問題
就是刪除文章時, 其發文數(user_posts)是否會跟著一起變更\r
印象中, 使用版面管理功能刪文時, 並不會改變使用者的發文數\r
這樣就又會產生user_posts與實際的發文數可能不符的狀況
hpo14
竹貓忠實會員
竹貓忠實會員
文章: 414
註冊時間: 2003-05-10 16:37
來自: M Starbucks

文章 hpo14 »

可以使用 post_time 嗎??
去偵測會員的最後一篇文章的發表日期, 判斷要是超過 60 天, 便刪除該會員..
不過這樣會刪不掉60天內發文數小於1的會員\r
SQL 有辦法可以計算到 60 天前某會員的發文量嗎?? (是用日期去判斷嗎?)
非官方外掛問題區公告: [必看]請配合發問格式及明確主題發問(2004 02/16更新)

竹貓星球發問規則:
http://phpbb-tw.net/phpbb/viewtopic.php?t=16149

請不要濫用 私人訊息 或是 MSN 問問題...你以為竹貓是架好看的阿
~倉木麻衣~
竹貓忠實會員
竹貓忠實會員
文章: 1405
註冊時間: 2004-03-21 21:00

文章 ~倉木麻衣~ »

post_time也是可以
不過想了一下, 發現不管是那一個做法, 似乎都無法避免要將所有會員跑過一次\r
因為post_time也只是記錄這篇文章的發表日期, 並不代表這個使用者的最後發表時間

也許, 在USERS_TABLE裡新增一個記錄最後發表時間(user_lastpost_time)會是比較簡單的解法 :-o
只要在發表文章時, 同步更新user_lastpost_time
那麼, 也許admin_prune_users.php裡的SQL這樣寫就可以了

代碼: 選擇全部

$sql [5] = ' AND user_lastpost_time<'.(time()-86400*60);
依夢兒
竹貓忠實會員
竹貓忠實會員
文章: 2013
註冊時間: 2002-11-20 00:07

文章 依夢兒 »

關於如何判斷會員最後一次發表文章的時間,可以參考這一支外掛:
http://www.nivisec.com/downloads/phpbb/ ... t_date.txt
它可以讓會員列表顯示每一位會員最後一次發表文章的日期和時間,搭配快速砍人在會員列表提供的刪除功能挺好用的。
(不過要一個個手動刪除就是了 ^^")

另外請教一下,將這一支外掛安裝好後,要如何將最後發表時間也納入會員列表的排序功能呢?
我稍微摸索了一下,知道要修改哪幾個地方,可是改出來後還是失敗了....
有任何關於 phpBB 或是架站的問題,請在論壇上公開發表出來,大家一起討論。
請不要丟私人訊息問我,因為私訊是用來聊私事的。
這樣作對於解決您的問題一點幫助也沒有,也很沒有效率,小弟我一概謝絕。



搜尋是一種美德,在發問之前,請多加利用頂端的文章搜尋功能,搜尋可能的關鍵字。
確定您想問的問題找不到答案後,再發問。
神川小羽
調皮の小羽
調皮の小羽
文章: 1461
註冊時間: 2004-05-01 05:55
來自: 謎樣之筱語
聯繫:

文章 神川小羽 »

老實說,我個人是覺得這之外掛的寫法非常不適用在快速砍人上面\r
他的sql查詢句的方式其實是每個會員都送一次查詢,因為會員列面每一頁
只會出現一定數量的會員,也就是說會員列面上面每一頁出現多少個會員就會送出多少次查詢
而不是一次將會員最後發表的時間列出來,如果這種方式應用在快速砍人上面的話\r
會員越多,當在查詢的時候會給資料庫帶來相當恐怖的負擔
舉例,如果你有5000個會員\r
就可能會變成 (假如後台可以顯示這東西的話↓)
Page generation time: ????s (PHP: 0% - SQL: 100%) - SQL queries: 5000 - GZIP enabled - Debug on
依夢兒 寫:另外請教一下,將這一支外掛安裝好後,要如何將最後發表時間也納入會員列表的排序功能呢?
好像是沒辦法耶...因為會員列表的查詢句,跟這外掛的查詢句是不是同在一個查詢句中。

我個人的看法是,倉木麻衣學長的方式應該是最理想的方式,就是再會員列面中追加一個欄位
然後發表文章的時候同步更新該會員的這個欄位資料會是比較理想的方式。
-.-
~倉木麻衣~
竹貓忠實會員
竹貓忠實會員
文章: 1405
註冊時間: 2004-03-21 21:00

Re: [問題] 請教關於快速砍人的設定問題

文章 ~倉木麻衣~ »

~倉木麻衣~ 寫:是否將所有的user_lastvisit都換成user_session_time是否會比較好, 則不是很肯定會比較好\r
因為現在還不能確定「從未登入」($sql [1])這部份是否會有誤判的問題
晚些做個實驗好了, 看註冊完後只登入過一次的使用者是否會判定成從未登入
這個部份剛才測試了一下
「從未登入」($sql [1]) 的部份維持用 user_lastvisit="0" 即可, 不需要變更\r
在測試時, 剛註冊完的guest1帳號, 其user_lastvisit 值為 0
註冊完成並登入論壇後, 再到phpMyAdmin裡查看其user_lastvisit欄位值, 發現已是非0值\r
因此從未登入的判斷部份不需變更\r

同樣的
「未啟用帳號」採用的判斷式為\r

代碼: 選擇全部

$sql [2] = ' AND user_lastvisit=0 AND user_active=0';
依上面測試的結果, 這段程式碼也不用變更\r

最後的結論是, 只需將$sql [3] 及 $sql[4]的user_lastvisit變更成 user_session_time即可
依夢兒
竹貓忠實會員
竹貓忠實會員
文章: 2013
註冊時間: 2002-11-20 00:07

文章 依夢兒 »

~倉木麻衣~ 寫:最後的結論是, 只需將$sql [3] 及 $sql[4]的user_lastvisit變更成 user_session_time即可
瞭解,謝謝您辛苦的協助測試。 :-P

神川小羽 寫:好像是沒辦法耶...因為會員列表的查詢句,跟這外掛的查詢句是不是同在一個查詢句中。
嗯,除非在會員列表寫一段程式將查詢出來的「最後發表時間」也讓會員列表看得懂,不然直接照原來排序的寫法如法砲製一定會失敗。

目前我是將就著用啦!也就在會員列表中看誰最後發表時間超過二個月,然後手動一個個慢慢砍.... @_@
有任何關於 phpBB 或是架站的問題,請在論壇上公開發表出來,大家一起討論。
請不要丟私人訊息問我,因為私訊是用來聊私事的。
這樣作對於解決您的問題一點幫助也沒有,也很沒有效率,小弟我一概謝絕。



搜尋是一種美德,在發問之前,請多加利用頂端的文章搜尋功能,搜尋可能的關鍵字。
確定您想問的問題找不到答案後,再發問。
主題已鎖定

回到「外掛問題討論」