Перейти к контенту
  • 0

<noindex> внешних ссылок для IPB 1.2


Dekker

Вопрос

Рекомендуемые сообщения

  • 0

Копал 1.3 конечно же.

У себя в итоге сделал через редирект. Плюс сделал, чтобы внутренние ссылки открывались в том же окне.

 

После

<?php

добавил

require ROOT_PATH."conf_global.php";
define(BOARD_URL,$INFO['board_url']);

 

После

function unconvert($txt="", $code=1, $html=0) {

добавил

$txt = str_replace( BOARD_URL."/html/counter/counter.php?link=", "", $txt );

 

После

$txt = preg_replace( "#<a href=[\"']mailto:(.+?)['\"]>(.+?)</a>#"						 , "\[EMAIL=\\1\]\\2\[/EMAIL\]"   , $txt );

добавил

$txt = preg_replace( "#<a href=[\"']http://(.+?)['\"] target='_blank'>(.+?)</a>#"						 , "\[URL=http://\\1\]\\2\[/URL\]"   , $txt );
$txt = preg_replace( "#<a href=[\"']http://(.+?)['\"]>(.+?)</a>#"						 , "\[URL=http://\\1\]\\2\[/URL\]"   , $txt );

 

Вместо

return $url['st'] . "<a href='".$url['html']."' target='_blank'>".$show."</a>" . $url['end'];

использовал

		if (stristr($url['html'], BOARD_URL) and !stristr($url['html'], "act=Attach"))return $url['st'] . "<a href='".$url['html']."'>".$show."</a>" . $url['end'];
	elseif(stristr($url['html'], "act=Attach"))return $url['st'] . "<a href='".$url['html']."' target='_blank'>".$show."</a>" . $url['end'];
	else return $url['st'] . "<a href='".BOARD_URL."/html/counter/counter.php?link=".$url['html']."' target='_blank'>".$show."</a>" . $url['end'];

 

Создал:

html\counter\index.html:

<html><head><title>Статистика переходов по ссылкам, размещенных посетителями форума</title></head><body><h3 align="center">Статистика переходов по ссылкам, размещенных посетителями форума</h3><table border="0" cellspacing="0" cellpadding="3" align="center">
<tr><th align=right>Адрес</th><th> </th><th>Переходов</th></tr>
<!--item--><tr><td align=right>ya.ru</td><td> — </td><td align=left>3</td></tr>
</table></body></html>

 

html\counter\counter.php:

<?php
if(isSet($_GET['link']))
{
require("../../conf_global.php");
$link = preg_replace( "/require|include/", "" , $_SERVER['REQUEST_URI']);
$link = explode("counter/counter.php?link=",$link);
$link = $link[1];$link_go = $link;
$link = preg_replace("/http:\/\/www.|http:\/\//","",$link);

if( stristr($link,"/") )
{
	$link = explode("/",$link);
	$link = $link[0];
}
@ob_start();
include( $INFO['base_dir']."html/counter/index.html" );
$report = @ob_get_contents();
@ob_end_clean();

if(!stristr($report,$link))
	{
		$report = str_replace("</table>","<!--item--><tr><td align=right>".$link."</td><td> — </td><td align=left>0</td></tr>\n</table>",$report);
	}
$report_parsed = "";
$report = explode("<!--item-->",$report);
foreach( $report as $row )
	{
		if(stristr($row,$link."</td>"))
		{
			$row_n = explode("<td align=left>",$row);$row_n = $row_n[1];
			$row_n = explode("</td>",$row_n);$row_n = $row_n[0];
			$row_n = intval($row_n);$row_n = $row_n + 1;
			$row = preg_replace( "#<td align=left>(.+?)</td>#is", "<td align=left>".$row_n."</td>", $row );
		}
	$report_parsed .= "<!--item-->".$row;
	}
$report_parsed = str_replace("<!--item--><html>","<html>",$report_parsed);
// Если не бот
if(
	(
	stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "compatible")
	or stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "Opera")
	or stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "Mozilla")
	or stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "Firefox")
	or stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "MSIE")
	or stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "FreeBSD")
	or stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "Windows")
	or stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "Macintosh")
	or stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "unix")
	)
	and
	(
	!stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "/bot.")
	and !stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "Googlebot")
	and !stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "Crawler")
	and !stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "Yandex/1.01.001")
	and !stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "msnbot")
	and !stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "yahoo.com")
	and !stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "StackRambler")
	and !stristr($HTTP_SERVER_VARS['HTTP_USER_AGENT'], "Mail.Ru/1.0")
	)
)
// Пишем счетчик обращений
{
	$fh = fopen($INFO['base_dir']."html/counter/index.html", "w");
	fwrite($fh, $report_parsed);
	fclose($fh);
// Файл отдаем и людям, и ботам:
}
header("location: ".$link_go);

}
else echo("<h1 align=center>Не указан адрес запроса!</h1>");
?>

Ссылка на комментарий
Поделиться на других сайтах

  • 0
FatCat, с аттачами были проблемы в конкретных браузерах, не помните?
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Sannis

 

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

 

можно это хорошее наблюдение перенести куда нибудь в трикс к примеру.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

И не должны наблюдать, на ссылки с act=Attach не накладывается редирект.

 

Просто интересно, мне казалось сейчас все браузеры верно обрабатывают подобные вещи.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

У меня модифицированы аттачи: можно не только файлы аттачить, но и внешние линки со счетчиком переходов.

Например, линк http://vesvalo.net/index.php?act=Attach&type=post&id=81373 перекинет на http://www.aa.org/, а в скрытом разделе форума на сообщении номер 81373 на счетчике единичка прибавится. :D

 

Поэтому и вынес аттачи под target='_blank'.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Сам дурак, не прочитал второе elseif :D Теперь понятна причина ;)
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Dekker ты забыл про сисман.ру? :D

 

http://www.sysman.ru/index.php?showtopic=18425&hl=

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Song

 

ну как я мог забыть такой уважаемый ресурс :D просто думал где-то в выдаче гугла да и нарвусь на sysman, однак мимо. гуглил строго по запросу (заголовок темы)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Блин поставил работало все потом начало вылетать "Не указан адрес запроса!" че эт может быть?

Переустановил... все осталось также 8(

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Это к хостеру.

if(isSet($_GET['link']))

отдает у Вашего хостера FALSE.

А в строке запроса имеем: http://yazlo.ru/html/counter/counter.php?link=http://www.proxer.ru/

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.