[問題]求~攔截廣告功能[已解決]

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

版主: 版主管理群

momoC
星球公民
星球公民
文章: 167
註冊時間: 2004-09-15 22:39
聯繫:

[問題]求~攔截廣告功能[已解決]

文章 momoC »

各位大大:
我快被廣告逼瘋了。有些廣告每天都來貼,擋 ip 根本擋不完。
我到後台看到有文字過濾功能,希望能有個「留言攔截」的功能。如果系統發現有人在貼廣告固定用語或網站,就直接讓那個人不能留言。有人能提供嗎?
_______________________________\r
怕沒有人有在開發這功能,所以我已經開始動工:
目前我將「文字過濾」功能複製成「留言攔截」功能,進入 language folder 裡去裝 lang_admin.php,才將「文字過濾」那段複製一份,改成我想要「留言攔截」說明--還沒跑我改的攔截程式哦!後台就進不去,會出現這個錯誤訊息:

代碼: 選擇全部

Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in c:\appserv\www\phpbb2\language\lang_chinese_traditional_taiwan\lang_admin.php on line 541
我肯定我只是加文字標籤,根本不會影響程式功能。請問要怎麼辦??

對不起,我知道我是 plus 版本,但我只求 phpbb 的版本,其他的我可以自己修改,謝謝大家!
最後由 momoC 於 2005-07-05 16:53 編輯,總共編輯了 3 次。
● 架設主機作業系統:IIS 6.0
● 上網方式:DSL
● 虛擬空間 http://www.securemate.com
● 安裝程式:php 4 + MySql 2.5.4
● phpBB2 版本:phpBB 2.0.22
● domain: http://www.genderwars.org
● phpBB 連結: http://phpbb.genderwars.org
蕭遙
星球公民
星球公民
文章: 120
註冊時間: 2004-09-29 05:21

文章 蕭遙 »

難道說標簽衝突?但是那並不會造成錯誤,也許又是分號丟了吧…………
momoC
星球公民
星球公民
文章: 167
註冊時間: 2004-09-15 22:39
聯繫:

文章 momoC »

後來發現好像是 lang_admin.php 就是不給改,不知道為什麼它整個 admin folder 裡的檔案增減十分敏感,可能是它的特殊功能吧!我現在想開了,把 lang_admin.php 還原,比照 topic shadow 的寫法自己去傳呼一個新寫的 language_admin_blockpost 檔案。其他的....還在努力中.... :roll:

--------------------------
可以了可以了,我的電腦很怪,修改似乎不會馬上被收到,不必用 topic shadow 的方式也行,現在麻煩的是程式寫法明明都一樣,資料庫也建了,卻一直和我說資料庫找不到!!!
最後由 momoC 於 2004-10-26 04:50 編輯,總共編輯了 1 次。
momoC
星球公民
星球公民
文章: 167
註冊時間: 2004-09-15 22:39
聯繫:

文章 momoC »

可不可以請問一下?
為什麼我改程式的時候,明明已經改了,但跑程式時卻跑不出來?等到我再換另一個方式改寫時,舊的修改出來了,新的修改還是沒出來?是我的電腦有問題嗎?難怪改老半天改不出結果.... :evil:
蕭遙
星球公民
星球公民
文章: 120
註冊時間: 2004-09-29 05:21

文章 蕭遙 »

會不會是編輯器的原因?你用的什麽編輯器改寫?
momoC
星球公民
星球公民
文章: 167
註冊時間: 2004-09-15 22:39
聯繫:

文章 momoC »

用 UEDIT32,不過我的系統是朋友幫忙裝的英文XP系統。之前 lang_admin.php問題發現是我明明是改好了,但存完再開檔發現UEDIT32會將「攔」這個字改為亂碼,但重新開機後再改一次竟然就不會了。後來又為了從 php 抓文字到 tpl 沒有注意函數的大小寫,整了我一天。現在「攔截留言」的存檔和編輯功能已經寫好,還在想要怎麼做攔截。找了找「文字過濾」的相關資料,才知道「文字過濾」對中文好像沒什麼用,傷腦筋~有點中計的感覺 :cry: 不過,廣告應該一般都會留網址和電腦,攔英文如果可以的話,也許還是可以一試吧....

總之,是 UEDIT32不好,還是我系統可能會有中英文衝碼的問題呢?
蕭遙
星球公民
星球公民
文章: 120
註冊時間: 2004-09-29 05:21

文章 蕭遙 »

我想可能是系統的問題吧…… 我一個朋友也是這樣,用的英文XP加挂中文包,結果總是有很神奇的問題出現。後來一怒之下重灌系統之後就好了。

要是攔網址格式的話,那麽別人正常的網址也不能發了……
momoC
星球公民
星球公民
文章: 167
註冊時間: 2004-09-15 22:39
聯繫:

文章 momoC »

想請教蕭兄一個問題,preg_match 要怎麼用?

我忽然發現我都白做了一堆,文字過濾功我看了一堆頭昏眼花的,找不到資料到底從哪裡帶進來。現在我改變想法,不加新的程式,而是在過濾功能中,將特定網址代換成 disapprove 這個字。然後用 preg_match 去抓發文裡有沒有 disapprove 的字串,如果有的話,就在 function_post 顯示問題。這樣一來只是加一個小小的判斷碼,省去所有的工程。

可是,我不會用 preg_match,也不知道要放哪裡,又試了一晚,快瘋了~

-----------------------
匹匹:我倒不是攔網址格式,而是特定網址,因為最惡搞的就那幾家網址和電話而已,其它的看到聲明都會尊重。
蕭遙
星球公民
星球公民
文章: 120
註冊時間: 2004-09-29 05:21

文章 蕭遙 »

aiken
竹貓忠實會員
竹貓忠實會員
文章: 1514
註冊時間: 2003-11-09 11:02
來自: 大頭真論壇
聯繫:

文章 aiken »

你的會員沒有e-mail認證嗎?
如果有的話...犯案的會員直接鎖他的username跟e-mail address就可以了
一個人頂多也才10幾20個e-mail吧~~
momoC
星球公民
星球公民
文章: 167
註冊時間: 2004-09-15 22:39
聯繫:

文章 momoC »

aiken 寫:你的會員沒有e-mail認證嗎?
如果有的話...犯案的會員直接鎖他的username跟e-mail address就可以了
一個人頂多也才10幾20個e-mail吧~~
唉~我網站的宗旨是讓網友能不必具名地分享內心的隱私,很多訪客是不敢具名或留下任何資料,以免被認出來的。所以我開放了訪客留言。(提外話:我也試著用過會員認證的功能,不知道為什麼有人說他就是收不到認證信....,所以我就沒開啟那功能了。)謝謝建議~

謝謝蕭兄,這網頁我有找到過,我的問題目前是在於怎麼 check array?

代碼: 選擇全部

if( $preview )
{
	$orig_word = array();
	$replacement_word = array();
	obtain_word_list($orig_word, $replacement_word);
[color=#ff007f]
	$bangthis="no";
	$bangresult=preg_match($replacement_word, $orig_word, $matches[0]);

	if ( $bangresult > 0 )
	{
		if ( $replace_word=="disapprove" )
		{ 			
			$bangthis="bang";
		}
		else
		{
			$bangthis="warn";
		}
	}
[/color]

我目前是做紅字部分的修改。語法好像有錯,什麼結果也沒有。不知道為什麼 $orig_word 和 $ replace_word 裡面好像也是空的,抓不出值,程式卻跑得出結果?$bangresult 因此沒有內容,該怎麼改這部分判斷呢?
蕭遙
星球公民
星球公民
文章: 120
註冊時間: 2004-09-29 05:21

文章 蕭遙 »

這個我不會用的說…… 不過我看到例子和function_post.php裏用到的地方,都在搜索的變量前後加限定符的說,會不會是這個原因?
momoC
星球公民
星球公民
文章: 167
註冊時間: 2004-09-15 22:39
聯繫:

文章 momoC »

  經過 Free Talk Area 裡 Joe 的幫忙,程式完成了主要比對功能,我後來決定還是將封鎖網址直接放在「文字過濾」功能裡,但替換字串一律定為 "disapprove"。程式只要抓到是 "disapprove" 的,就首先給警告,所以一點不影響「文字過濾」的作業。
  這段文字要放在 function_post.php 裡 prepare_message function 的最後面。別忘了自己在 lang_main.php 定義 $lang。沒有人有討厭廣告的困擾嗎?這個外掛可以讓我多活很多年說.....

代碼: 選擇全部

// blockpost	
	$stop_words = array(); 
	$sql = "SELECT word, replacement FROM " . WORDS_TABLE . " WHERE replacement='disapprove'"; 
	if( !($result = $db->sql_query($sql)) ) 
	{ 
	   	message_die(GENERAL_ERROR, 'Could not get blocked words from database', '', __LINE__, __FILE__, $sql); 
	} 
	
	if ( $row = $db->sql_fetchrow($result) )
	{
		do 
		{
			$stop_words[] = $row['word'];
		}
		while ( $row = $db->sql_fetchrow($result) );
	}
	
	for ($i=0; $i < count($stop_words); $i++) 
   	{ 
      		if( substr_count($message, $stop_words[$i])<>'0') 
         	{ 
            		message_die(GENERAL_MESSAGE,$lang['stop_words_warning']); 
         	}       
   	}
蕭遙
星球公民
星球公民
文章: 120
註冊時間: 2004-09-29 05:21

文章 蕭遙 »

不好意思頂上來…… 想請教momoC兄有關preg_match的使用,我也被它搞到腦子亂掉了……

我是想要群發PM的功能,因爲沒有找到外掛,就打算自己寫。想法是讓會員在框内輸入多個收信人名稱,用逗號分隔,然後讀到$to_user_list裏,再用一個FOR循環多次寫入資料庫。 但是在抓取的時候卡住了,因爲不知道怎麽寫preg_match的正則表達式…………我也沒看懂那個網葉的說。momoC兄能指導一下嘛?
momoC
星球公民
星球公民
文章: 167
註冊時間: 2004-09-15 22:39
聯繫:

文章 momoC »

蕭遙 寫:不好意思頂上來…… 想請教momoC兄有關preg_match的使用,我也被它搞到腦子亂掉了……

我是想要群發PM的功能,因爲沒有找到外掛,就打算自己寫。想法是讓會員在框内輸入多個收信人名稱,用逗號分隔,然後讀到$to_user_list裏,再用一個FOR循環多次寫入資料庫。 但是在抓取的時候卡住了,因爲不知道怎麽寫preg_match的正則表達式…………我也沒看懂那個網葉的說。momoC兄能指導一下嘛?
蕭遙兄,真是抱歉!我竟然沒看到你這則留言。我最近也開始用 phpbb ,才發現那時傻傻的,求到的 plus 版原來是無法用在 phpbb 2.0.16 上。所以現在又要努力了。我不知道我會不是因此研究出 preg_match 的使用方法,但我若有什麼發現,會報告乎你聽。祝我好運吧!我沒有擋廣告功能是不行的,有些廣告商實在太難纏了! :cry:
● 架設主機作業系統:IIS 6.0
● 上網方式:DSL
● 虛擬空間 http://www.securemate.com
● 安裝程式:php 4 + MySql 2.5.4
● phpBB2 版本:phpBB 2.0.22
● domain: http://www.genderwars.org
● phpBB 連結: http://phpbb.genderwars.org
主題已鎖定

回到「外掛問題討論」