<?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.=' | ';
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>Описание сайта:</td><td>';
$content.= $site[description];
$content.= '</td></tr>';
$content.= '<tr><td align=right>Адрес сайта:</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;
}
}
}
?>