Просмотр файла flashcat/index.php

Размер файла: 19.38Kb
<?php
	require_once 'conf.php';

    if(!mysql_connect($_conf[mysql_host],$_conf[mysql_user],$_conf[mysql_passwd])){
    	die('Не удалось установить соединение с MySQL!');
    }

    if(!mysql_select_db($_conf[mysql_dbname])){
        die('База данных не найдена!');
    }

    session_start();

    if($_REQUEST[os]>0){
    	$os=(int)$_REQUEST[os];
    }else{
    	$os=0;
    }

	if($_REQUEST[act]=='s_add'){
    	show_add_form();
	}else if($_REQUEST[act]=='add'){
    	add_site();
	}else if($_REQUEST[cat_id]>0){
		show_category();
	}else if($_REQUEST[site_id]>0 && $_conf[site_page]==1){
    	show_site_page();
	}else{
    	show_categories();
	}

    function show_categories(){
    	/*
        отображение разделов сайта
    	*/
        global $_conf, $os;
        $title= 'Каталог сайтов';
        $content.= '<table cellpadding=5 width=100%>';
        $content.= '<tr><td><h1>Каталог сайтов</h1></td></tr>';
    	$query='select * from '.$_conf[table_prefix].'categories where parent_id=0 order by name';
    	$res=mysql_query($query);
    	while($row=mysql_fetch_array($res)){
        	$content.= '<tr><td>';
        	$content.= '<a class=category href="?cat_id='.$row[id].'">'.$row[name].'</a><br>';

            $query='select * from '.$_conf[table_prefix].'categories where parent_id='.$row[id].' order by name';
            $res1=mysql_query($query);
	        $first=true;
	        while($row1=mysql_fetch_array($res1)){
                if($first){
                    $first=false;
                }else{
                    $content.= ', ';
                }
            	$content.= '<a class=subcategory href="?cat_id='.$row1[id].'">'.$row1[name].'</a>';
			}
        	$content.= '</td></tr>';
    	}

        $content.= '<tr><td><br><a href="?act=s_add">Добавить сайт</a></td></tr>';
    	$content.= '</table>';
        $content.=file_get_contents('http://www.flashscripts.org/copyright.php?mode=flashcat&catalog='.urlencode($_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI]));
        //отображение страницы:
        $vars[content]=$content;    	//текст
        $vars[title]= $title; //заголовок
    	show_tpl($vars);
    }

    function show_category(){
    	/*
        отображение сайтов в разделе
    	*/
        global $_conf, $os;
        $content.= '<table>';
        $cat=mysql_fetch_array(mysql_query('select * from '.$_conf[table_prefix].'categories where id=\''.(int)$_REQUEST[cat_id].'\''));

        $content.= '<tr><td>';
        if($cat[parent_id]>0){
            $pcat=mysql_fetch_array(mysql_query('select * from '.$_conf[table_prefix].'categories where id=\''.$cat[parent_id].'\''));
	        $content.= '<h1>'.$pcat[name].': '.$cat[name].'</h1>';
	        $content.= '<a href="">Каталог сайтов</a>: <a href="?cat_id='.$pcat[id].'">'.$pcat[name].'</a>: '.$cat[name].'<br><br>';
	        $title=$pcat[name].': '.$cat[name];
        }else{
	        $content.= '<h1>'.$cat[name].'</h1>';
	        $content.= '<a href="">Каталог сайтов</a>: '.$cat[name].'<br><br>';
	        $title=$cat[name];
        }
        $content.= '</td></tr>';
        $content.= '<tr><td>';
        $content.= '<table width=100%>';
        $query='select count(*) n from '.$_conf[table_prefix].'sites where category_id=\''.(int)$_REQUEST[cat_id].'\' and allowed=1';
	    $rown=mysql_fetch_array(mysql_query($query));
        if($rown[n]>$_conf[on_page]){
            $content.= '<br><br>Страницы: '.listpages ('<a href="?cat_id='.$_REQUEST[cat_id].'&os=%os%">%link%</a>', $rown[n], $os, $_conf[on_page], 6).'<br>';
    	}
	    $query='select * from '.$_conf[table_prefix].'sites where category_id=\''.(int)$_REQUEST[cat_id].'\' and allowed=1 order by id limit '.$os.', '.$_conf[on_page];
	    $res=mysql_query($query);
	    while($row=mysql_fetch_array($res)){
        	$content.= '<tr>';
            if(trim($row[banner_url])!='' && @is_picture($row[banner_url])){
	            if($_conf[site_page]==1){
	                $content.= '<td valign=top><a href="?site_id='.$row[id].'"><img src="'.$row[banner_url].'" border=1 style="border-color:e3e3e3;"></a></td><td width=100%>';
	            }else{
	                $content.= '<td valign=top><a href="'.$row[url].'"><img src="'.$row[banner_url].'" border=1 style="border-color:e3e3e3;"></a></td><td width=100%>';
	            }
            }else{
                $content.= '<td valign=top><a href="http://www.yandex.ru/cy?base=0&host='.str_replace('http://','',$row[url]).'"> <img src="http://www.yandex.ru/cycounter?'.str_replace('http://','',$row[url]).'" width="88" height="31" alt="Яндекс цитирования" border="0"> </a></td><td width=100%>';
            }
            if($_conf[site_page]==1){
                $content.= '<a href="?site_id='.$row[id].'">'.$row[title].'</a></td>';
            }else{
                $content.= '<a href="'.$row[url].'" target=_blank>'.$row[title].'</a><br>'.$row[description].'</td>';
            }
        	$content.= '</tr>';
	    }
	    $content.= '</table>';
        if($rown[n]>$_conf[on_page]){
            $content.= '<br><br>Страницы: '.listpages ('<a href="?cat_id='.$_REQUEST[cat_id].'&os=%os%">%link%</a>', $rown[n], $os, $_conf[on_page], 6).'<br>';
    	}
        $content.= '</td></tr>';
        $content.= '<tr><td><br><a href="?act=s_add&cat_id='.$_REQUEST[cat_id].'">Добавить сайт</a></td></tr>';
        $content.= '</table>';
        //отображение страницы:
        $vars[content] = $content; 	//текст
        $vars[title]= $title; 		//заголовок
    	show_tpl($vars);
    }

	function listpages ($href, $total, $os, $rpp, $limit=15) {
		/*
        отображение постраничного разбиения
		*/
		$page = floor($os/$rpp)+1;
		$pages = ceil($total/$rpp);
	  	$_start = max(0,$page-max(ceil($limit/2),$page-$pages+$limit))+1;
	  	$_finish = min($pages,$_start + $limit-1);
	  	if ($qs) if ($qs{0}!='?') $qs='?'.$qs;
	  	if ($total > $rpp) {
	    	for($i=$_start;$i<=$_finish;$i++) {
	      		if($i!=$_start) $ret.='&nbsp;|&nbsp;';
	      		if ($i != $page) {
	        		$ret .= str_replace(array('%os%','%link%'),array(($i-1)*$rpp,$i),$href);
	      		} else {
	            	$ret .= "<strong>$i</strong>";
	          	}
	        }
	  	}
	  	return $ret;
	}

    function show_site_page(){
    	global $_conf;
        $site=mysql_fetch_array(mysql_query('select * from '.$_conf[table_prefix].'sites where id=\''.(int)$_REQUEST[site_id].'\''));
        $cat=mysql_fetch_array(mysql_query('select * from '.$_conf[table_prefix].'categories where id=\''.$site[category_id].'\''));
    	$title=$cat[name].' - '.$site[title];
        $content.= '<table width=100%>';
        $content.= '<tr><td colspan=2><h1>'.$site[title].'</h1></td></tr>';

    	$content.= '<tr><td align=right>Название:</td><td width=100% valign=top><a href="'.$site[url].'" target=_blank>'.$site[title].'</a></td><td>';
        if(trim($site[banner_url])!='' && @is_picture($site[banner_url])){
        	$content.= '<tr><td align=right valign=top>Кнопка:</td><td><img border=1 style="border-color:#000000;" src="'.$site[banner_url].'" border=0></td></tr>';
        }
    	$content.= '<tr><td align=right valign=top>Описание&nbsp;сайта:</td><td>';
        $content.= $site[description];
    	$content.= '</td></tr>';
    	$content.= '<tr><td align=right>Адрес&nbsp;сайта:</td><td><a href="'.$site[url].'" target=_blank>'.$site[url].'</a></td></tr>';
    	$content.= '<tr><td colspan=2><br><a href="?cat_id='.$site[category_id].'">Вернуться в раздел</a></td></tr>';
    	$content.= '</table>';

        //отображение страницы:
        $vars[content] = $content; 	//текст
        $vars[title]= $title; 		//заголовок
    	show_tpl($vars);
    }

	function show_add_form($err=null){
        global $_conf;
        $title='Каталог сайтов - форма добавления';
        $content='<h1>Форма добавления сайта</h1>';
   		if(trim($err)!=''){
        	$content.= '<b style="color:red;">'.$err.'</b>';
		}
        $content.= '<table>';
    	$content.= "<script language=JavaScript>
            	function check_form(obj){
                    var regex = /^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)$/;
                	if(obj.url.value==''){
                    	alert('Необходимо ввести URL сайта!');
                    	return false;
                	}
                	if(obj.title.value==''){
                    	alert('Необходимо ввести название сайта!');
                    	return false;
                	}
                	if(obj.email.value=='' || !regex.test(obj.email.value)){
                    	alert('Необходимо ввести email!');
                    	return false;
                	}
                	if(obj.fio.value==''){
                    	alert('Пожалуйста введите Ваше имя!');
                    	return false;
                	}
                	if(obj.description.value==''){
                    	alert('Необходимо ввести описание сайта!');
                    	return false;
                	}";
        if($_conf[need_backlink]>1){
			$content.= "if(obj.backlink_url.value==''){alert('Необходимо разместить код нашей ссылки и указать адрес ее размещения!'); return false;}";
        }
        if($_conf[need_checkcode]>0){
			$content.= "if(obj.check_code.value==''){alert('Необходимо ввести числовой код!'); return false;}";
        }
    	$content.= "return true;}</script>";
        if($_conf[need_backlink]>0){
	        $row=mysql_fetch_array(mysql_query('select code from '.$_conf[table_prefix].'backlinks order by Rand()'));
	        $_SESSION[backlink_code]=$row[code];
	        $content.= '<tr><td colspan=2 align=center>Код нашей ссылки:</td></tr>';
	        $content.= '<tr><td colspan=2 align=center><textarea style="width:350;height:80;">'.$row[code].'</textarea><br><br></td></tr>';
        }
    	$content.= '<form action="?act=add" method=post name=addForm>';
    	$content.= '<tr><td align=right>URL:*</td><td><input class=inp type=text name=url value="'.$_REQUEST[url].'"></td></tr>';
    	$content.= '<tr><td align=right>Название:*</td><td><input class=inp type=text name=title value="'.$_REQUEST[title].'"></td></tr>';
    	$content.= '<tr><td align=right>Раздел:*</td><td>';
    	$content.= '<select name=cat_id>';
    	$res=mysql_query('select * from '.$_conf[table_prefix].'categories where parent_id=0 order by name');
    	while($row=mysql_fetch_array($res)){
        	$content.= '<option value="'.$row[id].'">'.$row[name];
	        $res1=mysql_query('select * from '.$_conf[table_prefix].'categories where parent_id='.$row[id].' order by name');
	        while($row1=mysql_fetch_array($res1)){
                if($_REQUEST[cat_id]==$row1[id]){
                    $content.= '<option selected value="'.$row1[id].'">'.$row[name].' >> '.$row1[name];
                }else{
                    $content.= '<option value="'.$row1[id].'">'.$row[name].' >> '.$row1[name];
                }
        	}
    	}
    	$content.= '</select>';
    	$content.= '</td></tr>';
    	$content.= '<tr><td align=right>Описание:*</td><td><textarea class=inp name=description>'.$_REQUEST[description].'</textarea></td></tr>';
    	$content.= '<tr><td align=right>URL кнопки 88x31 (если есть):</td><td><input class=inp type=text name=banner_url value="'.$_REQUEST[banner_url].'"></td></tr>';
    	$content.= '<tr><td align=right>Email (не отображается):*</td><td><input class=inp type=text name=email value="'.$_REQUEST[email].'"></td></tr>';
    	$content.= '<tr><td align=right>Ваше имя:*</td><td><input class=inp type=text name=fio value="'.$_REQUEST[fio].'"></td></tr>';

    	if($_conf[need_backlink]>1){
            $content.= '<tr><td align=right>URL страницы с нашей ссылкой:*</td><td><input class=inp type=text name=backlink_url value="'.$_REQUEST[backlink_url].'"></td></tr>';
    	}

        if($_conf[need_checkcode]>0){
	        $n[1]=rand(0,9);
	        $n[2]=rand(0,9);
	        $n[3]=rand(0,9);
	        $n[4]=rand(0,9);
	        $img='';
	        $num=1000*$n[1]+100*$n[2]+10*$n[3]+$n[4];
	        foreach($n as $n1){
	            $img.='<img width=8 height=10 src="'.$CFG[www_root].'images/'.$n1.'.gif">';
	        }
	        $_SESSION[check_code]=$num;
	        $content.= '<tr><td></td><td>'.$img.'</td></tr>';
	        $content.= '<tr><td align=right>Код, указанный выше:*</td><td><input class=inp type=text name=check_code></td></tr>';
        }

    	$content.= '<tr><td></td><td><input type=submit value="Далее" onclick="return check_form(document.addForm);"></td></tr>';
    	$content.= '</form>';
    	$content.= '<tr><td colspan=2><br><a href="#" onclick="history.back();">Назад</a></td></tr>';
    	$content.= '</table>';

        //отображение страницы:
        $vars[content] = $content; 	//текст
        $vars[title]= $title; 		//заголовок
    	show_tpl($vars);
	}

	function add_site(){
        global $_conf;
		if($_REQUEST[check_code]==$_SESSION[check_code] || $_conf[need_checkcode]==0){
            $_REQUEST[url]='http://'.str_replace('http://', '', $_REQUEST[url]);
            $_REQUEST[backlink_url]='http://'.str_replace('http://', '', $_REQUEST[backlink_url]);
            if($url_arr=@parse_url($_REQUEST[url])){
            	if(@check_backlink($_REQUEST[backlink_url], $_SESSION[backlink_code]) || $_conf[need_backlink]<2){
	                $_REQUEST[url]='http://'.$url_arr[host];
	                $query='select id from '.$_conf[table_prefix].'sites where url=\''.$_REQUEST[url].'\''.($_conf[need_backlink]>1?' or backlink_url=\''.$_REQUEST[backlink_url].'\'':'');
	                $res=mysql_query($query);
	                if(mysql_num_rows($res)>0){
	                    show_add_form('Такой сайт уже есть в нашем каталоге!');
	                }else{
	                    if($_conf[need_moder]==1){$all=0;}else{$all=1;}
	                    $query='
	                        INSERT INTO '.$_conf[table_prefix].'sites
	                            (category_id, url, title, description, banner_url, backlink_url, backlink_code, date, fio, email, allowed)
	                        VALUES
	                            (
	                                 \''.(int)$_REQUEST[cat_id].'\',
	                                 \''.$_REQUEST[url].'\',
	                                 \''.strip_tags($_REQUEST[title]).'\',
	                                 \''.strip_tags($_REQUEST[description]).'\',
	                                 \''.strip_tags($_REQUEST[banner_url]).'\',
	                                 \''.strip_tags($_REQUEST[backlink_url]).'\',
	                                 \''.$_SESSION[backlink_code].'\',
	                                 \''.time().'\',
	                                 \''.strip_tags($_REQUEST[fio]).'\',
	                                 \''.strip_tags($_REQUEST[email]).'\',
	                                 \''.$all.'\')';
	                    mysql_query($query);
                        $title='Ваша ссылка добавлена!';
                        if($_conf[need_moder]==1){
                            $content='<table width=640><tr><td align=center>Ваша ссылка добавлена к рассмотрению и появится в каталоге после проверки модератором. Благодарим за внимание к нашему каталогу.<br><br><a href="">Вернутьсяв каталог</a></td></tr></table>';
                        }else{
                            $content='<table width=640><tr><td align=center>Ваша ссылка добавлена. Благодарим за внимание к нашему каталогу.<br><br><a href="">Вернуться в каталог</a></td></tr></table>';
                        }
	                    //отображение страницы:
	                    $vars[content] = $content;  //текст
	                    $vars[title]= $title;       //заголовок
	                    show_tpl($vars);
	                }
            	}else{
                    show_add_form('Наша ссылка не найдена!');
            	}
            }else{
                show_add_form('Введите корректный URL!');
            }
	    }else{
	    	show_add_form('Введите правильный код!');
	    }
	}

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

	function show_tpl($vars){
    	$tpl=file_get_contents('tpl/main.tpl');
    	foreach($vars as $k=>$v){
        	$tpl=str_replace('{{'.$k.'}}', $v, $tpl);
    	}
    	echo $tpl;
	}

    /*проверка, возвращает ли URL картинку*/
    function is_picture($url){
	    $url_arr=@parse_url($url);
	    $host=$url_arr[host];
	    $path=$url_arr[path].($url_arr[query]!=''?'?'.$url_arr[query]:'');
	    $fp = fsockopen($host, 80, $a, $b, 1);
	    if(!$fp) {
	        return false;
	    } else {
	        fputs($fp,"GET {$path} HTTP/1.0\r\nHost: {$host}\r\n\r\n");
            $page = fread($fp,1024);
	        fclose($fp);
	        if(strpos($page, 'Content-Type: image')>0){
	            return true;
	        }else{
	            return false;
	        }
	    }
    }
?>