Размер файла: 5.04Kb
<?php
/*
Файл проверки обратных ссылок - при отсутствии ссылки увеличивает количество штрафов у сайта.
При превышении штрафов более 3-х сайт удаляется из каталога.
При наличии обратной ссылки количество штрафов обнуляется.
*/
require_once '../conf.php';
@set_time_limit(0);
if(!mysql_connect($_conf[mysql_host],$_conf[mysql_user],$_conf[mysql_passwd])){
die('Не удалось установить соединение с MySQL!');
}
if(!mysql_select_db($_conf[mysql_dbname])){
die('База данных не найдена!');
}
if($_conf[need_backlink]>1){
$res=mysql_query('select * from '.$_conf[table_prefix].'sites where backlink_code!=\'\' and backlink_url!=\'\'');
$info=array();
while($row=mysql_fetch_array($res)){
if(check_backlink($row[backlink_url], $row[backlink_code])){
mysql_query('update '.$_conf[table_prefix].'sites set alerts=0 where id='.$row[id]);
echo 'Сайт '.$row[url].' проверен, ссылка найдена<br>';
$info[founded]++;
}else{
if($row[alerts]>2){
mysql_query('delete from '.$_conf[table_prefix].'sites where id='.$row[id]);
echo 'Сайт '.$row[url].' проверен, ссылка не найдена, сайт удален из каталога, т.к. количество штрафов превысило 3<br>';
$info[deleted]++;
$info[not]++;
}else{
mysql_query('update '.$_conf[table_prefix].'sites set alerts=alerts+1 where id='.$row[id]);
echo 'Сайт '.$row[url].' проверен, ссылка не найдена, сайт оштрафован<br>';
$info[alerted]++;
$info[not]++;
}
}
$info[total]++;
}
echo '<br><b>Проверка обратных ссылок проведена!</b>';
echo '<table>
<tr><td>Ссылок найдено:</td><td>'.(int)$info[founded].'</td></tr>
<tr><td>Не найдено:</td><td>'.(int)$info[not].'</td></tr>
<tr><td>Оштрафовано сайтов:</td><td>'.(int)$info[alerted].'</td></tr>
<tr><td>Удалено сайтов:</td><td>'.(int)$info[deleted].'</td></tr>
<tr><td>Всего сайтов проверено:</td><td>'.(int)$info[total].'</td></tr>
</table>';
}
function check_backlink($backlink_url, $code){
/*
проверка обратной ссылки
*/
$url_arr=parse_url($backlink_url);
$robot_meta=false;
$site_zap=false;
$dir_zap=false;
$robots_txt=@file_get_contents('http://'.$url_arr[host].'/robots.txt');
$robots_txt_strings=explode("\r\n",$robots_txt);
foreach($robots_txt_strings as $line){
$meta_rob=@get_meta_tags($backlink_url);
if($meta_rob["robots"]) {
if ((ereg('NOFOLLOW',$meta_rob["robots"]))or(ereg('NOINDEX',$meta_rob["robots"]))) {
$robot_meta = true;
break;
}
}
}
$fr=explode("\r\n",$robots_txt);
if(count($fr)>0){
foreach($fr as $stroka){
if(preg_match('/Disallow:\s*\/\s*$/i',$stroka)) {
$site_zap=true;
}
$ar=explode('/',$url_arr[path]);
$i=0;
while(count($ar)>$i) {
$subdir=$ar[$i];
if(preg_match('/Disallow:.*\/'.$subdir.'/i',$stroka) and $ar[$i]) {
$dir_zap=true;
$sub_dir_error=$subdir;
break;
}
$i++;
}
}
}
if ($robot_meta || $site_zap || $dir_zap){
return false; //страница со ссылкой запрещена к индексации
}else{
//страница разрешена к индексации поисковыми роботами, проверка наличия кода на странице:
if($fs = @fsockopen($url_arr[host],80)){
fputs($fs,"GET ".(strlen($url_arr[path])>0?$url_arr[path]:'/').(strlen($url_arr[query])>0?'?'.$url_arr[query]:'')." HTTP/1.0\r\nHost: {$url_arr[host]}\n\n");
$page='';
$str='';
while($str!="\r\n" && !feof($fs)){
$str=fgets($fs,2048);
$page.=$str;
}
if(!strpos($page,'200 OK')>0){
fclose($fs);
return false;
}
if(strpos($page,'html')>0){
$page='';
while(!feof($fs)){
$page.=fread($fs,2048);
}
fclose($fs);
$page=preg_replace('|<noindex[^>]*>.*?</noindex[^>]*>|si','',$page);
$page=preg_replace('|<script[^>]*>.*?</script>|si','',$page);
$page=preg_replace('|<!--.*?-->|si','',$page);
}else{
fclose($fs);
return false;
}
}else{
return false; //страница не отвечает
}
if(strpos('_'.$page, $code)>0){
return true; //код найден!
}else{
return false; //код не найден
}
}
}
?>