Новичок
Покинул форум
Сообщений всего: 3
Дата рег-ции: Дек. 2014
Помог: 0 раз(а)
|
Здравствуйте. Нашел такой вот скрипт проверки обратной ссылки. Скрипт старый, под php 5.3 вообще отказывался работать. Я его не много подправил и он вроде заработал. Но если этим скриптом проверять допустим страницу http://manyweb.ru/page_6_1.html, то он видит только пару ссылок и то своих (http://manyweb.ru). Можно определить в чем проблема? В сайте? В скрипте?
PHP:
скопировать код в буфер обмена
<? // http://kurilka.co.ua/archives/script-check-backlinks/ 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 = explode("[/]", $this->backlink_path); if ( count($backlink_path_ar)>0 ) { foreach ( $backlink_path_ar as $k=>$v ) { } } 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; //Здесь ошибка!! Починить потом sk. //if ( preg_match('/Disallow:\s*[\/]?'.$path.'[\/\*]?\s*$/i',$rule) ) return true; } } return false; } function check($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 ) { //echo '<pre>'. print_r ($v, true).'</pre>'; { 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 */ /*if ( eregi('noindex',$meta['robots']) || eregi('nofollow',$meta['robots']) ) { $this->errors = 'На странице '.$this->backlink.' есть META данные запрещающие её индексацию.'; return false; }*/ if (preg_match('/(nofollow|noindex)/i', $meta['robots'])) { $this->errors = 'На странице '.$this->backlink.' есть META данные запрещающие её индексацию.'; return false; } /* Link */ $data = ''; $fp = @fopen($this->backlink,"r"); if ( $fp ) { "'<script[^>]*?>.*?</script>'si", // Вырезается javascript "'<noscript[^>]*?>.*?</noscript>'si", // noscript "'<noindex[^>]*?>.*?</noindex>'si", // noindex "'<a[^>]*?rel=[\"\']nofollow[\"\'].*?>'si", //nofollow "'<\!--.*?-->'si", // remarka ); $replace = array(" "," "," "," "," "); if (preg_match_all('/<a.*?href=["\']http:\/\/(.*?)["\']/i', $data, $m)) { { foreach ( $m[1] as $k=>$v ) { //exit('<pre>'. print_r ($m, true).'</pre>'); if ($parse_url['host'] . $parse_url['path'] == $v) { return true; } if ($parse_url['host'] . $parse_url['path'] . '/' == $v) { return true; } /*if ( stripos($parse_url['host'], $v) ) { return true; }*/ } } } $this->errors = 'На странице '.$this->backlink.' ссылка '.$url.' не найдена или не доступна к индексации.'; } else $this->errors = 'Не удаётся открыть страницу '.$this->backlink; return false; } } ?>
Этим кодом проверяем ссылку.
PHP:
скопировать код в буфер обмена
$bl = new backlink("http://manyweb.ru/page_6_1.html"); if ( !$bl->check("http://mysite.ru" . '') ) echo $bl->errors;
Если раскоментировать строку exit('<pre>'. print_r ($m, true).'</pre>');
Видно какие ссылки имеются на странице, но именно на этом сайте он не показывает необходимые ссылки, хотя они там есть http://manyweb[dot]ru/page_6_1[dot]html
Почему так?
PHP:
скопировать код в буфер обмена
<pre> ( ( [0] => <a href="http://manyweb.ru/" [1]=""> </a> <a href ="http://manyweb.ru/" )="" [1]=""> Array ( [0] => manyweb.ru/ [1] => manyweb.ru/ ) ) </a> </pre>
|