Joomla 1.0 редирект внешних ссылок (bot_maskurl)

Тема в разделе "Неразобранное", создана пользователем TrillipuT, 11.09.2008.

  1. Offline

    TrillipuT Недавно здесь

    Регистрация:
    19.06.2007
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    Итак вопрос по редиректу внешних ссылок.
    Есть такой бот как maskurl. в принципе работает, но остается вопрос с внутренними ссылками.
    Получается что-то типа
    option=com_content&task=view&id=46&Itemid=34
    ссылка не открывается (из-за "amp;" в теле. видать при расшифровке выдает...), вернее открывается но пишет что у вас нет прав доступа к этой страничке. Если же убрать все amp; то все будет ок.

    Может можно убрать вообще шифровку чтоб он просто добавлял адрес к моему, типа
    http://mysite.com/index.php?option=goto=anylink.com

    тоесть без всякой шифровки?
    Или же добавить условие чтоб не обрабатывал ссылки начинающиеся с $mosConfig_live_site.....

    тут уже было обсуждение http://forum.joom.ru/index.php?topic=1755.msg56182
     

    Вложения:

    • bot_maskurl.zip
      Размер файла:
      942 байт
      Просмотров:
      25
  2.  
  3. Dead Krolik
    Offline

    Dead Krolik специалист

    Регистрация:
    13.04.2007
    Сообщения:
    3 688
    Симпатии:
    101
    Пол:
    Мужской
    Re: редирект внешних ссылок

    Боже мой, неужели я это писал :)

    Код (CODE):
    1. defined( '_VALID_MOS' ) or die( 'Restricted access' );
    2. $_MAMBOTS->registerFunction( 'onPrepareContent', 'maskUrl' );
    3.  
    4. function maskUrl( $published,& $row, &$params, $page=0 )
    5. {
    6.     global $database;
    7.     if (!$published) return true;
    8.  
    9.     preg_match_all("#<a(.+)>(.+)</a>#U",$row->text,$mt);
    10.     foreach($mt[1] as $ina)
    11.     {
    12.         preg_match_all("#(.*)href=([^ >]+)(.*)#",$ina,$mt2);
    13.         $mu = maskUrl2($mt2[2][0]);
    14.         if ($mu) $row->text = str_replace($mt2[0][0],$mt2[1][0]."href=\"".$mu."\"".$mt2[3][0],$row->text);
    15.     }
    16.  
    17.     return true;
    18. }
    19. function maskUrl2($url)
    20. {
    21.     global $mosConfig_live_site;
    22.     if (in_array($url{0},array('"',"'"))) $url = substr($url,1);
    23.     if (in_array($url{strlen($url)-1},array('"',"'"))) $url = substr($url,0,strlen($url)-1);
    24.  
    25.     $pos1 = strpos($url,$mosConfig_live_site);
    26.     $pos1 = strpos($url,"index.php");
    27.     if ($pos1!==false || $pos2!==false) return false;
    28.    
    29.     $url = $mosConfig_live_site.'/index2.php?no_html=1&option=com_maskurl&url='.strrev(base64_encode($url));
    30.     return $url;
    31. }


    Попробуй это, вдруг сработает.
     
  4. Offline

    TrillipuT Недавно здесь

    Регистрация:
    19.06.2007
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    Re: редирект внешних ссылок

    Да, именно ты :)

    Все работает большое спасибо, только пару нюансов
    Вот код.

    <?PHP
    defined( '_VALID_MOS' ) or die( 'Restricted access' );
    $_MAMBOTS->registerFunction( 'onPrepareContent', 'maskUrl' );

    function maskUrl( $published,& $row, &$params, $page=0 )
    {
    global $database;
    if (!$published) return true;

    preg_match_all("#<a(.+)>(.+)</a>#U",$row->text,$mt);
    foreach($mt[1] as $ina)
    {
    preg_match_all("#(.*)href=([^ >]+)(.*)#",$ina,$mt2);
    $mu = maskUrl2($mt2[2][0]);
    if ($mu) $row->text = str_replace($mt2[0][0],$mt2[1][0]."href=\"".$mu."\"".$mt2[3][0],$row->text);
    }

    return true;
    }
    function maskUrl2($url)
    {
    global $mosConfig_live_site;
    if (in_array($url{0},array('"',"'"))) $url = substr($url,1);
    if (in_array($url{strlen($url)-1},array('"',"'"))) $url = substr($url,0,strlen($url)-1);

    $pos1 = strpos($url,$mosConfig_live_site);
    $pos2 = strpos($url,"index.php");
    if ($pos1!==false || $pos2!==false) return false;

    $url = $mosConfig_live_site.'/index2.php?no_html=1&option=com_maskurl&url='.strrev(base64_encode($url));
    return $url;
    }
    ?>
     
  5. Dead Krolik
    Offline

    Dead Krolik специалист

    Регистрация:
    13.04.2007
    Сообщения:
    3 688
    Симпатии:
    101
    Пол:
    Мужской
    Re: редирект внешних ссылок

    Да. Там 2, это я скопипастил неверно. Гран мерси.
     

Поделиться этой страницей

Загрузка...