Перейти к контенту
  • 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/

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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