Мини профильНавигацияПопулярный материалПользователи онлайнАрхив материалаДрузья |
Класс для проверки обратной ссылки на PHP Как же всё таки проверять ссылки размещённые на сайтах ваших партнёров. Ну не обходить же все сайты, проще это сделать при помощи php класса. <?php class backlink { var $errors = ''; var $backlink = ''; var $backlink_parse = array(); var $backlink_path = ''; var $backlink_path_ar = array(); function backlink($backlink) { $this->backlink = $backlink; $this->backlink_parse = parse_url($backlink); $this->backlink_path = $this->backlink_parse['path']; if ( substr($this->backlink_path,0,1)=='/' ) $this->backlink_path = substr($this->backlink_path,1); if ( substr($this->backlink_path,-1)=='/' ) $this->backlink_path = substr($this->backlink_path,0,strlen($this->backlink_path)-1); $backlink_path_ar = split("[/]",$this->backlink_path); if ( count($backlink_path_ar)>0 ) { foreach ( $backlink_path_ar as $k=>$v ) { $v = trim($v); if ( empty($v) ) unset($backlink_path_ar[$k]); } } if ( count($backlink_path_ar)>0 ) $this->backlink_path_ar = $backlink_path_ar; } function subpath_check($rule) { if ( count($this->backlink_path_ar)>0 ) { $path = ''; foreach ( $this->backlink_path_ar as $k=>$v ) { $path.= empty($path) ? $v : "\/".$v; if ( preg_match('/Disallow:\s*[\/]?'.$path.'[\/\*]?\s*$/i',$rule) ) return true; } } return false; } function check($url) { $parse_url = parse_url($url); /* robotos.txt */ $robots_url = 'http://'.$this->backlink_parse['host'].'/robots.txt'; $robots_data_ar = @file($robots_url); if ( $robots_data_ar!==false ) { if ( count($robots_data_ar)>0 ) { foreach ( $robots_data_ar as $k=>$v ) { $v = trim($v); if ( !empty($v) ) { if ( preg_match('/Disallow:\s*\/\s*$/i',$v) ) // запрет индексации всего сайта { $this->errors = 'В '.$robots_url.' есть правило запрещающее индексировать сайт.'; return false; } if ( preg_match('/Disallow:\s*[\/]?'.str_replace("/","\/",$this->backlink_path).'[\/\$]\s*$/i',$v) || // запрет индексации страницы с ссылкой $this->subpath_check($v) // запрет индексации пути к странице с ссылкой ) { $this->errors = 'В '.$robots_url.' есть правило запрещающее индексировать страницу '.$this->backlink; return false; } } } } } /* META */ $meta = @get_meta_tags($this->backlink); if ( eregi('noindex',$meta['robots']) || eregi('nofollow',$meta['robots']) ) { $this->errors = 'На странице '.$this->backlink.' есть META данные запрещающие её индексацию.'; return false; } /* Link */ $data = ''; $fp = @fopen("http://".$this->backlink,"r"); if ( $fp ) { while (!feof($fp)) $data.= fgets ($fp,4096); fclose ($fp); $pattern = array ( "'<script[^>]*?>.*?</script>'si", // Вырезается javascript "'<noscript[^>]*?>.*?</noscript>'si", // noscript "'<noindex[^>]*?>.*?</noindex>'si", // noindex "'<a[^>]*?rel=["']nofollow["'].*?>'si", //nofollow "'<\!--.*?-->'si", // remarka ); $replace = array(" "," "," "," "," "); $data = preg_replace($pattern, $replace, $data); if ( preg_match_all('/<a.*?href=["']http:\/\/(.*?)["']/i', $data, $m) ) { if ( count($m[1])>0 ) { foreach ( $m[1] as $k=>$v ) if ( eregi($parse_url['host'],$v) ) return true; } } $this->errors = 'На странице '.$this->backlink.' ссылка '.$url.' не найдена или не доступна.<br />Убедитесь что ссылка не заключена в теги <noindex></noindex> rel="nofolow" и другие...'; } else $this->errors = 'Не удаётся открыть страницу '.$this->backlink; return false; } } ?> Вот пример использования: <?php $bl = new backlink("your_site.ru"); if ( !$bl->check('http://'.$_SERVER[\'HTTP_HOST']) ){ echo "<center><b>".$bl->errors."</b></center>"; } ?> Проверка ссылки происходит в несколько этапов. * Проверка на саму ссылку * Проверка META данных запрещающие её индексацию * Проверка robots.txt на то что страница с нашей ссылкой не запрещена к индексации поисковой машиной Данный класс можно поставить на CRON один раз в сутки, и если ссылка размещена не так как нам надо. ссылка партнёра удаляется с вашего сайта. Данная статья подготовлена для сайта Arts-UP.ru Раздел: Уроки PHP Дата: 28-01-2012, 18:53 | Добавил: WorldPad | Читали: 307 | Другие новости по теме:Комментарии:Оставить комментарий |
ОпросКак давно вы программируете на PHP? Поисковая статистика
Метки уроков.htaccess, class, denwer, error, file_get_contents, function, get_cache, Google, HTML, input, mysql, MySql PHP Apache, PHP, register_globals, return, SEO, str_replace(), template, Yandex, Отправка почты, Статья, браузер, будет, доступен, кеширование на php, комментарии, массив, поисковой, постраничная навигация, продвижение, работы, сайт, сервер, ссылки, статей, статьи, текст, текстов, функции, функция
Показать все теги |