View file flashcat/admin/check_backlinks.php

File size: 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;  //код не найден
            }
        }
	}
?>