редирект хитрых ссылок с форума phpbb

dspu
На сайте с 10.05.2006
Offline
268
1154

форум phpbb

редирект следующим скриптом go.php?url=

if( !(preg_match("/^http:\/\/([-a-z0-9\.]+\.[a-z]{2,6}\/?[\-\_\%\{\}\/\#\~\:\?\;\=\.\+\&a-z0-9]*)$/i", $_GET['url'])) ) 

{
die("&#205;&#229;&#239;&#240;&#224;&#226;&#232;&#235;&#252;&#237;&#251;&#233; URL<br> <a href='".$_GET['url']."'>".$_GET['url']."</a>");
}
else
{
header("HTTP/1.1 303 See Other");
header("location: ".$_GET['url']);
exit();
}

вот такую ссылку:

http://support.dell.com/support/topics/global.aspx/support/my_systems_info/details?c=us&l=en&s=gen&ServiceTag=5298W41&~tab=1
обрабатывает неправильно :gm:

знатоки php, подскажите, как мне переделать скрипт?

или это в принципе невозможно - передать такой url параметром скрипту и надо править сам phpbb?

М
На сайте с 08.02.2006
Offline
59
#1

Функция urlencode

dspu
На сайте с 10.05.2006
Offline
268
#2
Магнат:
Функция urlencode

т.е. передавать след.образом:

go.php?url='urlencode('http://externalsite.ru')'

с кавычками не ошибся нигде?

T
На сайте с 11.07.2007
Offline
43
#3

URL<br> <a href='".urlencode($_GET['url'])."'>".$_GET['url']."</a>");

М
На сайте с 08.02.2006
Offline
59
#4

go.php?url=<?php print urlencode('http://externalsite.ru');?>

А кстати, что подразумевалось под "обрабатывает неправильно", регексп не срабатывает или переадресация ?

dspu
На сайте с 10.05.2006
Offline
268
#5

данный редирект не передает сайту обработчику параметр ServiceTag=5298W41, т.е. должен показаться результат обработки этого параметра, а показывается форма ввода для него

поскольку это движок, то не уверен что так заработает, ссылка вставляется вот так:

<!-- BEGIN url --><a href="/go.php?url={URL}" target="_blank" class="postlink">{DESCRIPTION}</a><!-- END url -->

это bbcode.tpl - php в tpl файлах не работает, вот тут еще можно намудрить (bbcode.php):


<php
function make_clickable($text)
{
$text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1:", $text);

// pad it with a space so we can match things at the start of the 1st line.
$ret = ' ' . $text;

// matches an "xxxx://yyyy" URL at the start of a line, or after a space.
// xxxx can only be alpha characters.
// yyyy is anything up to the first space, newline, comma, double quote or <
$ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"/go.php?url=\\2\" target=\"_blank\">\\2</a>", $ret);

// matches a "[/zzzz]" kinda lazy URL thing
// Must contain at least 2 dots. xxxx contains either alphanum, or "-"
// zzzz is optional.. will contain everything up to the first space, newline,
// comma, double quote or <.
$ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"/go.php?url=\\2\" target=\"_blank\">\\2</a>", $ret);

// matches an email@domain type address at the start of a line, or after a space.
// Note: Only the followed chars are valid; alphanums, "-", "_" and or ".".
$ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret);

// Remove our padding..
$ret = substr($ret, 1);

return($ret);
}
?>

но как и где обработать {URL} из основного файла, непонятно

dspu
На сайте с 10.05.2006
Offline
268
#6

вот про такой адрес go.php ругается что он неправильный:

http://abris-nb.ru/component/page,shop.product_details/flypage,shop.flypage/product_id,125/category_id,109/manufacturer_id,0/option,com_virtuemart/Itemid,27/

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий