1 頁 (共 1 頁)

[問題]某些網址會導致 [url] [/url] 完全失效

發表於 : 2006-05-24 11:44
brentsu
通常 phpBB 會自動判斷 http://,所以不見得需要使用 [ url ],但是偶爾還是會出問題,例如這個網址:

http://tw.myblog.yahoo.com/jw!kwGBmA2CH ... le?mid=408

http://tw.myblog.yahoo.com/jw!kwGBmA2CH ... le?mid=408

這只是我遇到的其中之一而已,如果你手動剪貼網址,就會知道網址本身是存在而且 OK 可以閱讀的!

各位可以看到無論是直接貼上去,還是前後加上 [ url ] 與 [ /url ] 都會失敗!我想問題應該是出在判別 http:// 結束記號的上面,很顯然的,上面的網址只讀到【!】之前就停止了....

前後加上 [ url ] 與 [ /url ] 就更慘了,直接不予處理,還直接把整個 BBCode 給 show 出來給你看... Orz

請問有沒有什麼辦法可以解決這個有點頭大的問題呢?我搜尋了半天沒找到相關的外掛修正... 看看能不能改成用空格或是換行做為結束記號??

發表於 : 2006-05-24 12:10
chiouss
去改 includes/bbcode.php 裡面處理 url 部分的 regular expression
--
討論外掛請往下

發表於 : 2006-05-24 14:25
brentsu
去改 bbcode.php 也只能解決加上 [ url ] 的問題吧?直接貼上去的網址,我忘記要去哪裡改了... 哈哈~~

請問關於規則部份指的是這個嗎? [\w\#$%&~/.\-;:=,?@\[\]+]

發表於 : 2006-05-24 14:34
~倉木麻衣~
多加個!進去就好了, 但不保證不會有什麼安全上的顧慮

#
#--------[ OPEN ]----------------
#
includes/bbcode.php

#
#--------[ FIND ]----------------
#

代碼: 選擇全部

	$patterns[] = "#\[url\]([\w]+?://([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/url\]#is";
#
#--------[ REPLACE WITH ]----------------
#

代碼: 選擇全部

	$patterns[] = "#\[url\]([\w]+?://([\w\#$%&~/.\-;:=,?@\]+!]+|\[(?!url=))*?)\[/url\]#is";
#
#--------[ FIND ]----------------
#

代碼: 選擇全部

	$patterns[] = "#\[url=([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is";
#
#--------[ REPLACE WITH ]----------------
#

代碼: 選擇全部

	$patterns[] = "#\[url=([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+!]*?)\]([^?\n\r\t].*?)\[/url\]#is";
#
#--------[ FIND ]----------------
#

代碼: 選擇全部

	$ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret);
#
#--------[ REPLACE WITH ]----------------
#

代碼: 選擇全部

	$ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+!]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret);
#
#--------[ SAVE/CLOSE FILE ]----------------
#
# EoM

發表於 : 2006-05-24 17:55
brentsu
~倉木麻衣~ 寫:多加個!進去就好了, 但不保證不會有什麼安全上的顧慮
非常感謝倉木樣寫的 MOD,但是看到後面的那句話,我的心情頓時跟我的頭像一樣......

哈哈哈~~~乾笑個幾聲..... 這篇說的也不知是真是假?

http://forum.icst.org.tw/phpBB2/viewtopic.php?t=9127
(7)"!"請求
這種字元請求常用語對SS(Server Side Include) I進行攻擊,如果攻擊者迷惑用戶點擊被攻擊者設定的聯結,和上面的一樣。
如果 ! 是安全性漏洞,那.... 我還是別改的好...
總之,再次感謝倉木樣的大力協助,至少又學到改 BBCode 的技術... :mrgreen: