Dekker Опубликовано 18 Марта 2009 Жалоба Поделиться Опубликовано 18 Марта 2009 кто нибудь копал post_parser на предмет сабжа ? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 18 Марта 2009 Жалоба Поделиться Опубликовано 18 Марта 2009 Копал 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 Dekker Опубликовано 18 Марта 2009 Автор Жалоба Поделиться Опубликовано 18 Марта 2009 FatCat памятник бы вам поставить, только скажите в каком месте Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Sannis Опубликовано 18 Марта 2009 Жалоба Поделиться Опубликовано 18 Марта 2009 FatCat, с аттачами были проблемы в конкретных браузерах, не помните? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Dekker Опубликовано 18 Марта 2009 Автор Жалоба Поделиться Опубликовано 18 Марта 2009 Sannis вроде пока не наблюдаю, завтра потестирую. можно это хорошее наблюдение перенести куда нибудь в трикс к примеру. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Sannis Опубликовано 18 Марта 2009 Жалоба Поделиться Опубликовано 18 Марта 2009 И не должны наблюдать, на ссылки с act=Attach не накладывается редирект. Просто интересно, мне казалось сейчас все браузеры верно обрабатывают подобные вещи. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 18 Марта 2009 Жалоба Поделиться Опубликовано 18 Марта 2009 У меня модифицированы аттачи: можно не только файлы аттачить, но и внешние линки со счетчиком переходов.Например, линк http://vesvalo.net/index.php?act=Attach&type=post&id=81373 перекинет на http://www.aa.org/, а в скрытом разделе форума на сообщении номер 81373 на счетчике единичка прибавится. Поэтому и вынес аттачи под target='_blank'. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Sannis Опубликовано 18 Марта 2009 Жалоба Поделиться Опубликовано 18 Марта 2009 Сам дурак, не прочитал второе elseif Теперь понятна причина Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Song Опубликовано 21 Марта 2009 Жалоба Поделиться Опубликовано 21 Марта 2009 Dekker ты забыл про сисман.ру? http://www.sysman.ru/index.php?showtopic=18425&hl= Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Dekker Опубликовано 24 Марта 2009 Автор Жалоба Поделиться Опубликовано 24 Марта 2009 Song ну как я мог забыть такой уважаемый ресурс просто думал где-то в выдаче гугла да и нарвусь на sysman, однак мимо. гуглил строго по запросу (заголовок темы) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Exebit Опубликовано 6 Мая 2009 Жалоба Поделиться Опубликовано 6 Мая 2009 Блин поставил работало все потом начало вылетать "Не указан адрес запроса!" че эт может быть?Переустановил... все осталось также 8( Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 6 Мая 2009 Жалоба Поделиться Опубликовано 6 Мая 2009 Ссылку дайте где посмотреть. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Exebit Опубликовано 6 Мая 2009 Жалоба Поделиться Опубликовано 6 Мая 2009 http://yazlo.ru/topic694s0.html Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Freestyler(c) Опубликовано 6 Мая 2009 Жалоба Поделиться Опубликовано 6 Мая 2009 ЗАчем копирайты убрали Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Exebit Опубликовано 6 Мая 2009 Жалоба Поделиться Опубликовано 6 Мая 2009 хде Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 6 Мая 2009 Жалоба Поделиться Опубликовано 6 Мая 2009 Это к хостеру.if(isSet($_GET['link']))отдает у Вашего хостера FALSE.А в строке запроса имеем: http://yazlo.ru/html/counter/counter.php?link=http://www.proxer.ru/ Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Вопрос
Dekker
Ссылка на комментарий
Поделиться на других сайтах
15 ответов на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.