1 頁 (共 3 頁)

[問題]限制引言字數

發表於 : 2003-12-08 22:48
依夢兒
例如 [quote ]引言字數[/quote ] ,中間的引言字數限制不能超過多少字,例如 100 字....

我有想過把防灌水機制拿來改造,也就是 posting_body.tpl 的這一段:

代碼: 選擇全部

	formErrors = false;

	if (document.post.message.value.length < 10) {
		formErrors = "{L_EMPTY_MESSAGE}";
	}
但是不知道要用什麼字串取代 message ....

Re: [問題]限制引言字數

發表於 : 2003-12-08 23:07
messagebox
依夢兒 寫:例如
引言字數[/quote ] ,中間的引言字數限制不能超過多少字,例如 100 字....

我有想過把防灌水機制拿來改造,也就是 posting_body.tpl 的這一段:

代碼: 選擇全部

	formErrors = false;

	if (document.post.message.value.length < 10) {
		formErrors = "{L_EMPTY_MESSAGE}";
	}
但是不知道要用什麼字串取代 message ....
這是用JAVASCRIPT~但是很可惜~~在發言的表單並沒有單獨將引言內容放在一個變數或表單裡~~
他是直接將引言內容丟進輸入文字的文字方塊中~
所以單純這樣改~~做不到~~

Re: [問題]限制引言字數

發表於 : 2003-12-08 23:15
依夢兒
messagebox 寫:他是直接將引言內容丟進輸入文字的文字方塊中~
所以單純這樣改~~做不到~~
嗯,那請教一下有沒有別的作法,例如從 posting.php 或 functions_post.php 下手??
(發送文章時先把含有 quote 代碼的部份給攔截下來,計算字數是否超過系統設定的最大值)

發表於 : 2003-12-08 23:26
GeniusKiKi
從 Casd MOD 模組下手吧\r
他的發放文章賞金不是有可以設定引言不計算?
那也許我們可以把引言部分語法拆出來
改成引言計算

口厄~似乎很困難\r
當我沒說

Re: [問題]限制引言字數

發表於 : 2003-12-08 23:30
messagebox
依夢兒 寫:
messagebox 寫:他是直接將引言內容丟進輸入文字的文字方塊中~
所以單純這樣改~~做不到~~
嗯,那請教一下有沒有別的作法,例如從 posting.php 或 functions_post.php 下手??
(發送文章時先把含有 quote 代碼的部份給攔截下來,計算字數是否超過系統設定的最大值)
小於某設定的字數~不給引言??或是??
PHP是有辦法拿到他引言的地方~

發表於 : 2003-12-08 23:40
GeniusKiKi
應該是引言與自行輸入文章比例設定問題
引言的比例過高則跳出警告訊息\r

一般 BBS 也是這樣

發表於 : 2003-12-09 00:11
messagebox
GeniusKiKi 寫:應該是引言與自行輸入文章比例設定問題
引言的比例過高則跳出警告訊息\r

一般 BBS 也是這樣
如果要做到BBS這樣的功能~

我有這樣一個想法~
算出[ quote]到[ /quote]總共有多少字元~
然後在取得發言字數~
如果(發言字數)小於(引言*1.5)
輸出\r
[php]<script language=javascript>
<!--
alert("引言過長");
window.history.go(-1)
//-->
</script>[/php]
這是做得到的~

Re: [問題]限制引言字數

發表於 : 2003-12-09 00:39
依夢兒
GeniusKiKi 寫:從 Casd MOD 模組下手吧\r
他的發放文章賞金不是有可以設定引言不計算?
Cash Mod 的確是有好幾段和 quote 有關的部份分佈在好幾個檔案內,
作用是判別哪一些文字屬於引言,哪一些文字不屬於引言。
然後搭配 Cash Mod 模組設定「引言是否算在本文內」,好讓系統核算這篇文章可賺多少錢。
不過我不清楚這幾段要怎麼改....

messagebox 寫:小於某設定的字數~不給引言??或是??
PHP是有辦法拿到他引言的地方~
不是,是「大於設定的字數」不讓他發表。
例如我設定 100 字,如果網友回覆文章的引言字數超過 100 字,發送時系統就會出現錯誤訊息,要求他更正。
道理和防灌水機制(限制文章發表內容最少字數)是一樣的,只是反過來而已。
這麼作的用意是避免網友引言不當,回覆文章引言時把前面一大堆又臭又長的內容全部都引進來,結果自己打的內容只有一、二句。
引言應該是挑重點引吧,全部都引一點意義也沒有,只是佔版面、佔資料庫空間.... @_@

這裡有我在我自己論壇上發表的錯誤範例 :P
http://morningmusumenet.net/phpbb/viewt ... 9405#59405

messagebox 寫:我有這樣一個想法~
算出[ quote]到[ /quote]總共有多少字元~
然後在取得發言字數~
如果(發言字數)小於(引言*1.5)
嗯,這樣也是可以的啦,用比例的....
但是如果能以固定字數來計算,效果應該會更好。

發表於 : 2003-12-15 08:24
messagebox
OK~
現在搞定了
目前設定是發言的文字扣除引言部分須達到引言一半的字數~~
有其他需求請自行更改~

http://onlyou.org/download_file/chk_post.zip
解壓縮後~請將chk_post.php放入includes資料夾\r

接下來請

代碼: 選擇全部

開啟
posting.php
尋找\r
include($phpbb_root_path . 'includes/functions_post.'.$phpEx);
在下面加入\r
include($phpbb_root_path . 'includes/chk_post.'.$phpEx);
收工
想測試請到\r
http://onlyou.org/bbs/
預覽不受影響~
但如果引言過多~~送出時就會出現警告~
順便說一下~在BBS上其實是比對引言行數跟發言行數~
不過我認為~~這樣只會導致猛按ENTER的人變多~
不過應該是可以讓貴站乾淨許多~

如果覺得規定太嚴格~~
請自行修改判斷式~
目前是~
[php]<?php
//includes/chk_post.php
//如果全部字數(包括引言)還小於引言字數*1.5
//就會跳出javascript對話盒~
//並自動返回上一頁~
if (($q_text_len*1.5) > $a_text_len){
error_idea ("引言過多,請刪除部分引言\\
發言內容必須至少有引言部分的一半字數");
}
?>[/php]
也請各位如果發生非預期狀況~請告知我

發表於 : 2003-12-15 18:56
依夢兒
請問 messagebox 兄,我試過了,但是好像沒什麼用。
http://onlyou.org/bbs/viewtopic.php?p=201#201

引言字數為 50 字,自己打的字只有 10 字。
很明顯的引言的字數超過自己打的字數好幾倍,仍然可以發表....

messagebox 寫:OK~
現在搞定了
目前設定是發言的文字扣除引言部分須達到引言一半的字數~~
嗯,聽起來怪怪的....還是您誤會我的意思了??
應該是「引言的字數超過發言的字數多少」,系統不讓他發表才對。
例如我引了 100 字,結果我自己回覆的字數只有 20 字,這樣就不行了。

發表於 : 2003-12-15 19:08
依夢兒 寫:請問 messagebox 兄,我試過了,但是好像沒什麼用。
http://onlyou.org/bbs/viewtopic.php?p=201#201

引言字數為 50 字,自己打的字只有 10 字。
很明顯的引言的字數超過自己打的字數好幾倍,仍然可以發表....

messagebox 寫:OK~
現在搞定了
目前設定是發言的文字扣除引言部分須達到引言一半的字數~~
嗯,聽起來怪怪的....還是您誤會我的意思了??
應該是「引言的字數超過發言的字數多少」,系統不讓他發表才對。
例如我引了 100 字,結果我自己回覆的字數只有 20 字,這樣就不行了。
不是限制引言字數嗎?怎麼會變成回覆字數不得少於引言字數的幾分之幾\r
我看不太懂。。。不過我想要的功能跟依夢兒大大說的差不多。。。
等各位大大測試完。。。我在用吧@@||

發表於 : 2003-12-15 19:19
messagebox
在我的機器上現在是設定3成
(我個人覺得~需要發言到引用文字的5成有點過分~所以我自己改成3成)
就是說~
引言的字數包括標籤\r
假設現在引言字數是90+quote標籤總共為100字元
這時候引言回覆只需要輸入30個字元就可以引言發表

至於你不能成功測試的原因~是因為你是發表文章~
而不是引用文章發表~

我在測試區有發表一篇100字的文章~
加上引言標籤~
估計你必須輸入35個字以上才能引用發表~

如果是直接用發表主題~
而不是選擇回覆、引言回覆~
程式是不判斷的~
因為第一篇並沒有引用的道理~通常第一篇用引言標籤是用來作特效的~

另外說明一下~你們的意思我知道~~
沒有誤會~~只是我程式在發表新主題是不作判斷的~
只有在回覆文章~

[php]$HTTP_POST_VARS['mode'] == "reply"[/php]

其實這種東西可以用java script來作~
但是CLIENT端的SCRIPT會有個缺點~
人家用穿牆就會失效~~所以我還是決定交給SERVER端來判斷

發表於 : 2003-12-15 19:43
依夢兒
messagebox 寫:在我的機器上現在是設定3成
三成是不是把 1.5 改成 1.3 ??

messagebox 寫:沒有誤會~~只是我程式在發表新主題是不作判斷的~
只有在回覆文章~
[php]$HTTP_POST_VARS['mode'] == "reply"[/php]
再請問一下,這樣的話,如果是在編輯文章的情況下,是否生效??
也就是說如果 USER 先回覆了文章,然後修改內容加了一堆引言進去,好像就沒辦法受到限制了。
是否應該把 == "reply" 改成 == "reply" || "editpost" ?? (我亂猜的)

文 寫:不是限制引言字數嗎?怎麼會變成回覆字數不得少於引言字數的幾分之幾
如果引言引了一大堆,而自己打的內容太少,或是根本自己就沒打任何內容,這樣的回覆文章習慣很不好。
所以才要設定「回覆字數不得少於引言字數的百分之x」,這樣你瞭解了嗎??
也就是說設定「回覆字數不得少於引言字數的百分之x」是為了達到我們想要的效果。

如果你還是聽不懂,
你只要把「回覆字數不得少於引言字數的百分之x」當成「引言字數不得多於回覆字數的百分之x」,這樣你應該就懂了。
這二者的意思是一樣的,只是換一個角度去解釋而已。

發表於 : 2003-12-15 20:22
messagebox
剛剛又改的比較完善了~
目前設定是~~編輯~回覆都會進行判定~
如果文中有多重引言~
將會一個一個判定~~\r
並且將錯誤原因告訴發言者~
有興趣可以前往我的討論版玩玩看~

剛剛之前的版本並沒有加入多重引言判定~
就是說~
如果如這樣的引言~
[ quite]dfsldkfjdslfj[/ouite]
這邊發言~
[ quite]dfsldkfjdslfj[/ouite]

將會誤判回覆者並沒有輸入文字~
剛剛已經作了修正~
並且將編輯一並列入判斷的條件~~

當初真的沒有想到編輯這回事~所以沒加入~
的確~
本來我是判定所有發表的文字字元數(包括引言內容)必須大於引言部分的150%也也就是說~自己發表的~必須大於引言的50%
後來想想~我這樣的判定雖然結果一樣~
但對於別人來說~或許觀念會突然轉不過來~
所以現在在多算一行~把發言的字數(不包含引言)單獨算出~
所以現在你們可以這樣算了~
如果發言小於引言的30%就不給POST~
我在下面有另外加一行限制發言字數~
就是說~不管引言多少~
反正你就是要給我寫到XX字元~(不過我個人比較不建議~這樣有點盲)
另外附註一點~換行字元<CRLF>是2個字元~所以換一次行就會多2個字元
本來想將這個作判定~我想了想~應該不需要這麼嚴格~
且在UNIX系統上(張貼者的系統)~換行字元只有一個字元~

總而言之~~有興趣者可以考慮先到我的討論版測試~
覺得有用在裝~

發表於 : 2003-12-15 20:41
依夢兒
新版本好像有問題,無論是回覆或是編輯都沒有用。
我引了 100 字,結果打 10 字文章照樣發送出去。(在 $must_len=intval($q_text_len*0.3); 的情況下)
之前那個舊版就沒有問題....

messagebox 寫:如果發言小於引言的30%就不給POST~
如果是引言字數大於發言內容的 20% 不給 POST 要怎麼設呢??