Вход Регистрация
Файл: guest/index.php
Строк: 441
<?php
session_start
();
error_reporting(0);
define('SR_DENIED', true);
if (!include (
"config.inc.php")) { die("Не найден рабочий файл конфигурации"); exit; }
if (!isset(
$_GET["messref"])) $messref=0; else $messref=1;

///////////   ФУНКЦИИ   ////////////

/////////// автозамена с автоматической вставкой ссылок и картинок ////////////
function replace ($string,$id)
{
        global 
$exech;
        
$string = " ".$string;
        
$string = str_replace ('"', "&quot;", $string);
        if (
$id=="answ")
        {
        
$string = eregi_replace ("[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*","<a href="mailto:\0" class=answ>\0</a>", $string);
        
$string = eregi_replace ('([[:space:]]|n|<br>)(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)', '\1<a href="http://\2" target="_blank" class=answ>\2</a>', $string);
        
$string = eregi_replace ('([[:space:]]|n|<br>)(http://.[-a-zA-Z0-9@:%_+.~#?&//=]+)', '\1<a href="\2" target="_blank" class=answ>\2</a>', $string);
        }
        else if (
$id=="dark")
        {
        
$string = eregi_replace ("[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*","<a href="mailto:\0" class=dark>\0</a>", $string);
        
$string = eregi_replace ('([[:space:]]|n|<br>)(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)', '\1<a href="http://\2" target="_blank" class=dark>\2</a>', $string);
        
$string = eregi_replace ('([[:space:]]|n|<br>)(http://.[-a-zA-Z0-9@:%_+.~#?&//=]+)', '\1<a href="\2" target="_blank" class=dark>\2</a>', $string);
        }
        else
        {
        
$string = eregi_replace ("[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*","<a href="mailto:\0">\0</a>", $string);
        
$string = eregi_replace ('([[:space:]]|n|<br>)(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)', '\1<a href="http://\2" target="_blank">\2</a>', $string);
        
$string = eregi_replace ('([[:space:]]|n|<br>)(http://.[-a-zA-Z0-9@:%_+.~#?&//=]+)', '\1<a href="\2" target="_blank">\2</a>', $string);
        }
        
$string = eregi_replace ('([img])(http://.[-a-zA-Z0-9@:%_+.~#?&//=]+)([/img])', '<img src="\2">', $string);
        
$autochange = file ($exech);
        
$lines = count ($autochange);
        for(
$i=0;$i<$lines;$i++)
                {
                list(
$change1,$change2)=explode("|", $autochange[$i]);
                
$string = eregi_replace("$change1","$change2",$string);
                }
        return 
trim($string);
}

/////////// простая автозамена ////////////
function replace_short ($string)
        {
        global 
$exech;
        
$string = " ".$string;
        
$string = str_replace ('"', "&quot;", $string);
        
$autochange = file ($exech);
        
$lines = count ($autochange);
        for(
$i=0;$i<$lines;$i++)
                {
                list(
$change1,$change2)=explode("|", $autochange[$i]);
                
$string = eregi_replace("$change1","$change2",$string);
                }
        return 
trim($string);
        }

/////////// очистка ввода пользователя ////////////
function cutty ($string)
        {
        
$string = trim($string);
        
$string = stripslashes($string);
        
$string = str_replace ("<", "&lt;", $string);
        
$string = str_replace (">", "&gt;", $string);
        
$string = ereg_replace ('\"', "&quot;", $string);
        
$string = ereg_replace ("\'", "&quot;", $string);
        
$string = ereg_replace ("&quot;", "&quot;", $string);
        
$string = ereg_replace ("'", "'", $string);
        
$string = ereg_replace ("'", "`", $string);
        
$string = str_replace ("r", "", $string);
        
$string = str_replace ("n", "<br>", $string);
        
$string = str_replace ("%", "&#37;", $string);
        
$string = str_replace ("!", "&#33;", $string);
        
$string = str_replace ("^ +", "", $string);
        
$string = str_replace (" +$", "", $string);
        
$string = str_replace ("|", "l", $string);
        return (
$string);
        }

/////////// замена тегов гостевой тегами html ////////////
function getHTMLtags($text)
    {
    
$text = str_replace("[b]","<strong>",$text);
    
$text = str_replace("[/b]","</strong>",$text);
    
$text = str_replace("[i]","<i>",$text);
    
$text = str_replace("[/i]","</i>",$text);
    
$text = str_replace("[font=red]","<font color=ff0000>",$text);
    
$text = str_replace("[font=blue]","<font color=003399>",$text);
    
$text = str_replace("[/font]","</font>",$text);
    return 
$text;
    }

/////////// вырезание тегов гостевой ////////////
function cutHTMLtags($text)
    {
    
$text = str_replace("[b]","",$text);
    
$text = str_replace("[/b]","",$text);
    
$text = str_replace("[i]","",$text);
    
$text = str_replace("[/i]","",$text);
    
$text = str_replace("[font=red]","",$text);
    
$text = str_replace("[font=blue]","",$text);
    
$text = str_replace("[/font]","",$text);
    return 
$text;
    }

/////////// форматирование дат сообщений ////////////
function mydate($date,$messnum)
        {
        
$min = date ($date);
        
$date = getdate ($date);
        
$mymon = array ("","января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря");
        
$m = $date[mon];
        
$myday = array( "в воскресенье","в понедельник","во вторник","в среду","в четверг","в пятницу","в субботу");
        
$d = $date[wday];
        
$real_month = $mymon[$m];
        if (
$real_month=="") $real_month="декабря";
        
$date = "Сообщение #".$messnum.", написано ".$myday[$d].", $date[mday] ".$real_month." $date[year] года, в $date[hours]:".date("i",$min);
        return 
$date;
        }

/////////// отображение сообщения ////////////
function mess($name,$mess,$mail,$url,$city,$date,$answer,$messnum)
        {
        global 
$BORDER, $DARK, $LIGHT, $ANSW, $anti_email, $PICHEIGHT, $PICWIDTH;
        if ((
$mail!="")&&($anti_email<>"yes"))
        {
            
$mess_mail = replace($mail,"dark");
        }
        else if ((
$mail!="")&&($anti_email=="yes"))
        {
            list(
$mm2,$mm1) = explode("@", $mail);
            
$mess_mail = "<a href="javascript:;"  onClick="openBrWindow('send_mail.php?mm1=$mm1&mm2=$mm2','send_mail','scrollbars=yes,resizable=yes,width=420,height=270');return false;"><img src="mail.php?mm1=$mm1&mm2=$mm2" align="absmiddle" border=0 /></a>";
        }
        echo 
"n<table border=0 align=center cellpadding=2 cellspacing=1 width=100% bgcolor=$BORDER>n";
        echo 
"<tr><td align=center bgcolor=$DARK class=pdark colspan=2>n";
        if(
$city=="") { echo "<a href="javascript: smile(':reply: [b]".$name."[/b] \n');"  class=dark><b>$name</b></a></td></tr>"; }
        else { echo 
"<a href="javaScript: smile(':reply: [b]".$name." (".$city.")[/b] \n');" class=dark><b>$name</b> ($city)</a></td></tr>n"; }
        if(
$mail!=""&&$url!="") { echo "</tr><td width=50% align=center bgcolor=$DARK class=pdark>Почта: $mess_mail</td><td width=50% align=center bgcolor=$DARK class=pdark>Сайт: $url</td></tr>n"; }
        if(
$url!=""&&$mail=="") { echo "</tr><td width=50% align=center bgcolor=$DARK class=pdark>Почта: нет</td><td width=50% align=center bgcolor=$DARK class=pdark>Сайт: $url</td></tr>n"; }
        if(
$url==""&&$mail!="") { echo "</tr><td width=50% align=center bgcolor=$DARK class=pdark>Почта: $mess_mail</td><td width=50% align=center bgcolor=$DARK class=pdark>Сайт: нет</td></tr>n"; }
        echo 
"</td></tr>n";
        echo 
"<tr><td bgcolor=$LIGHT class=p colspan=2><div id="m$date" align=justify>$mess</div></td></tr>n";
        echo 
"<tr><td align=right bgcolor=$LIGHT class=psmall colspan=2>".mydate($date,$messnum)."</td></tr>n";
        if(!(
$answer=="")) {
                echo 
"<tr><td align=left bgcolor=$ANSW class=pansw colspan=2>";
                echo 
"<b>Ответ :</b> $answer";
                echo 
"</td></tr>n"; }
        echo 
"</table>n";
        echo 
"<table border=0 cellpadding=0 cellspacing=0 width=100% height=4><tr><td height=4></td></tr></table>n";
        }


/////////// отображение ссылок на страницы гостевой ////////////
function getPages($total, $page, $link, $perpage)
        {
        
$mpp = $perpage;
        
$prev_page = $page - 1;
        
$next_page = $page + 1;
        if (
$total <= $mpp) $pages = 1;
        elseif(
$total % $mpp == 0) $pages = $total / $mpp;
        else 
$pages = $total / $mpp + 1;
        
$pages = (int) $pages;
        
$s_pages    = $page<7 ? 1 : floor($page / 7) * 7;
        
$e_pages    = $page + 6;
        if (
$e_pages > $pages) { $e_pages = $pages; }
        
$s = "";
        if (
$pages > 6){
        if(
$prev_page != 0) { $s = "<a href="".$link."page=1" class="mid"> &lt;&lt; </a>| n"; }
        if(
$prev_page) { $s .= "<a href="".$link."page=$prev_page" class="mid"> &lt; </a>| n"; }}
        for(
$i=$s_pages;$i<=$e_pages;$i++)
                {
                if (
$i != $page) { $s .= "<a href="".$link."page=$i" class="mid"> $i </a>| n"; }
                elseif (
$i != 1) { $s .= " <b> $i |</b> "; }
                elseif (
$page != $pages) { $s .= " <b> 1 |</b> "; }
                }
        if(
$page != $pages && $pages > 6)
                {
                
$s .= "<a href="".$link."page=$next_page" class="mid"> &gt; </a>| n";
                
$s .= "<a href="".$link."page=$pages" class="mid"> &gt;&gt; </a>| n";
                }
        if (!isset(
$s) || $s == "") { $s = " <b> 1 |</b> "; }
        return 
$s;
        }
        
        
///////////   КОНЕЦ ВСЕХ ФУНКЦИЙ   ////////////


///////////   устанавливаем в кукисы данные пользователя, вынимаем переменные из POST   ////////////
if (isset($_POST["name"]) and $_POST["name"] != "") { 
    
$name = $_POST["name"];
    
setcookie("cookname",cutty($name),time()+15552000); 
}
if (isset(
$_POST["mail"])) {
    
$mail = $_POST["mail"];
    
setcookie("cookmail",cutty($mail),time()+15552000);
}
if (isset(
$_POST["url"])) {
    
$url = $_POST["url"];
    
setcookie("cookurl",cutty($url),time()+15552000);
}
if (isset(
$_POST["city"])) {
    
$city = $_POST["city"];
    
setcookie("cookcity",cutty($city),time()+15552000);
}
if (isset(
$_POST["mess"])) {
    
$mess = $_POST["mess"];
}

///////////   вынимаем из кукисов данные пользователя для вставки в форму   ////////////
if (!isset($_POST["add"])):
        if (!isset(
$_COOKIE["cookname"])) $cookname = ""; else $cookname = $_COOKIE["cookname"];
        if (!isset(
$_COOKIE["cookmail"])) $cookmail = ""; else $cookmail = $_COOKIE["cookmail"];
        if (!isset(
$_COOKIE["cookurl"])) $cookurl = ""; else $cookurl = $_COOKIE["cookurl"];
        if (!isset(
$_COOKIE["cookcity"])) $cookcity = ""; else $cookcity = $_COOKIE["cookcity"];
        if (!isset(
$name) or $name == "") $name = $cookname;
        if (!isset(
$mail)) $mail = $cookmail;
        if (!isset(
$url))  $url = $cookurl;
        if (!isset(
$city)) $city = $cookcity;
        if (!isset(
$mess)){
                if (isset(
$_COOKIE['cookmess'])&&$messref==1)
                {
                    
$mess = $_COOKIE['cookmess'];
                    
setcookie("cookmess","",time()+15552000);
                }
                else 
$mess = "";
        }
endif;

///////////   выясняем IP-адрес пользователя   ////////////
if (getenv('HTTP_X_FORWARDED_FOR'))
{
    if (
trim(getenv('HTTP_X_FORWARDED_FOR'))<>"") $ip=getenv('HTTP_X_FORWARDED_FOR'); else $ip=getenv('REMOTE_ADDR');
    
}
else { 
$ip=getenv('REMOTE_ADDR');}

///////////   проверяем на отсутствие ошибок перед записью сообщения  ////////////
if (isset($_POST["add"])):
    if (!isset(
$name)) $name = "";
    if (!isset(
$mail)) $mail = "";
    if (!isset(
$url)) $url = "";
    if (!isset(
$city)) $city = "";
    if (!isset(
$mess)) $mess = "";
    if ((
$name == "") || (cutHTMLtags($mess) == "")) { $error[] = "Вы заполнили не все обязательные поля."; }
    if (
strlen($name) > $maxword) { $error[] = "Имя должно быть не длиннее $maxmail символов."; }
    if (
strlen($mail) > $maxmail) { $error[] = "Адрес e-mail не должен превышать $maxmail символов."; }
    if (
$mail != "" && !eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$",$mail)) { $error[] = "Таких адресов e-mail не бывает."; }
    if (
strlen($url) > $maxurl) { $error[] = "Адрес URL не должен превышать $maxurl символов."; }
    if (
strlen($city) > $maxcity) { $error[] = "Название города не должно превышать $maxcity символов."; }
    if (
strlen($mess) > $maxlenght) { $error[] = "Сообщение не должно превышать $maxlenght символов."; }
    if (
eregi("[^ ]{".$maxword.",}",$mess)) { $error[] = "Слова в сообщении не должны превышать $maxword символов."; }
    
$data_array = file("$data");
    
$cnt = count($data_array) - 1;
    
$ch_name = cutty($name);
    
$ch_mess = cutty($mess);
    for (
$i = $cnt; $i >= 0; $i--)
    {
        list(
$cname,$cmess,$cmail,$curl,$ccity,$cdate,$canswer) = explode("|", $data_array[$i]);
        
$check = "$ch_name|$ch_mess";
        if(
$check == "$cname|$cmess") { $error[] = "Такое сообщение уже есть в базе данных."; }
    }
    
$temp_string = $mess;
    while (
$temp_string=strstr($temp_string,'[img]'))
    {
        
eregi('([img])(http://.[-a-zA-Z0-9@:%_+.~#?&//=]+)([/img])',$temp_string,$pic_array);
        
$imgurl = $pic_array[2];
        
$picfile = @fopen("$imgurl","r");
        if (!
$picfile) { $error[] = "Не найден файл вставляемого в сообщение рисунка."; }
        else
        {
            
$imagesize = GetImageSize("$imgurl");
            if (!isset(
$imagesize[2])) { $error[] = "Вы пытаетесь вставить рисунок недопустимого формата."; }
            else
            {
                if (
$imagesize[0]>$PICWIDTH) { $error[] = "Ширина вставляемого рисунка больше максимально возможной (".$PICWIDTH." пикс.)"; }
                if (
$imagesize[1]>$PICHEIGHT) { $error[] = "Высота вставляемого рисунка больше максимально возможной (".$PICHEIGHT." пикс.)"; }
            }
        }
        
$cutlength = strlen($pic_array[0]);
        
$temp_string = substr($temp_string,$cutlength);
    }
endif;

///////////   проверяем, не редиска ли нам пишет    ////////////
$banip=file("$banlist");
$banlines=count($banip);
for(
$i=0;$i<$banlines;$i++)
{
    list(
$badip,$why,$who)=explode("|", $banip[$i]);
    if(
strstr($ip,$badip))
    {
        include(
"$header");
        echo 
"<table width=100% border=0 cellspacing=0 cellpadding=0 class=p><tr><td align=center>";
        echo 
"<table width=100% bgcolor=$BORDER border=0 cellspacing=1 cellpadding=3 class=p><tr><td bgcolor=#FF0000 align=center style="color:#FFFFFF"><b>Доступ запрещен!</b></td></tr>";
        
echo "<tr><td bgcolor=$LIGHT align=center>Для Вас гостевая книга закрыта.<br>Причина: $why</td></tr></table>";
        include(
"$footer");
        exit;
    }
    if ((
cutty($name)==cutty($who))&&(cutty($name)<>"")) $error[] = "Вам запрещено добавлять сообщения. Причина: $why";
}

///////////   если передается содержание формы и ошибок нет, то грузим файл write.php    ////////////
if ($name != "" && $mess != "" && isset($_POST["add"]) && $error == "")
{
    include(
"write.php");
    exit;
}

///////////   загружаем  шапку   ////////////
include("$header");
echo 
"<table width=100% border=0 cellspacing=0 cellpadding=0 class=p><tr><td align=center>";

///////////   загружаем  сообщения об ошибках   ////////////
if ($name != "" && $mess != "" && isset($_POST["add"]) && $error == ""):
elseif (isset(
$error) &&  $error != ""):
    echo 
"<table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="$BORDER">";
    echo 
"<tr><td align="center" class="error" bgcolor="#FF0000"><b>Ошибка!</b></td></tr>";
    
echo "<tr><td align="left" class="p" bgcolor="$LIGHT">";
    foreach (
$error as $value)
    {
        echo 
"<li>$value<br>";
    }
    echo 
"</td></tr>";
    echo 
"</table>";
    echo 
"<table border=0 cellpadding=0 cellspacing=0 width=100% height=4><tr><td height=4></td></tr></table>";
endif;

///////////   определяем, на какой мы странице   ////////////
if (!isset($_GET["page"])) $page = 1;
else 
$page = (int)$_GET["page"]; 

///////////   определяем страницу, на которой находимся. чистим от дерьма   ////////////
$clean_self = $_SERVER['PHP_SELF'];
$clean_rules = array('chr(', 'chr=', 'chr%20', '%20chr', 'wget%20', '%20wget', 'wget(',
                    
'cmd=', '%20cmd', 'cmd%20', 'rush=', '%20rush', 'rush%20',
                   
'union%20', '%20union', 'union(', 'union=', 'echr(', '%20echr', 'echr%20', 'echr=',
                   
'esystem(', 'esystem%20', 'cp%20', '%20cp', 'cp(', 'mdir%20', '%20mdir', 'mdir(',
                   
'mcd%20', 'mrd%20', 'rm%20', '%20mcd', '%20mrd', '%20rm',
                   
'mcd(', 'mrd(', 'rm(', 'mcd=', 'mrd=', 'mv%20', 'rmdir%20', 'mv(', 'rmdir(',
                   
'chmod(', 'chmod%20', '%20chmod', 'chmod(', 'chmod=', 'chown%20', 'chgrp%20', 'chown(', 'chgrp(',
                   
'locate%20', 'grep%20', 'locate(', 'grep(', 'diff%20', 'kill%20', 'kill(', 'killall',
                   
'passwd%20', '%20passwd', 'passwd(', 'telnet%20', 'vi(', 'vi%20',
                   
'insert%20into', 'select%20', 'nigga(', '%20nigga', 'nigga%20', 'fopen', 'fwrite', '%20like', 'like%20',
                   
'$_request', '$_get', '$request', '$get', '.system', 'http_php', '&aim', '%20getenv', 'getenv%20',
                   
'new_password', '&icq','/etc/password','/etc/shadow', '/etc/groups', '/etc/gshadow',
                   
'http_user_agent', 'http_host', '/bin/ps', 'wget%20', 'unamex20-a', '/usr/bin/id',
                   
'/bin/echo', '/bin/kill', '/bin/', '/chgrp', '/chown', '/usr/bin', 'g++', 'bin/python',
                   
'bin/tclsh', 'bin/nasm', 'perl%20', 'traceroute%20', 'ping%20', '.pl', '/usr/x11r6/bin/xterm', 'lsof%20',
                   
'/bin/mail', '.conf', 'motd%20', 'http/1.', '.inc.php', 'config.php', 'cgi-', '.eml',
                   
'file://', 'window.open', '<script>', 'javascript://','img src', 'img%20src','.jsp','ftp.exe',
                   
'xp_enumdsn', 'xp_availablemedia', 'xp_filelist', 'xp_cmdshell', 'nc.exe', '.htpasswd',
                   
'servlet', '/etc/passwd', 'wwwacl', '~root', '~ftp', '.js', '.jsp', 'admin_', '.history',
                   
'bash_history', '.bash_history', '~nobody', 'server-info', 'server-status', 'reboot%20', 'halt%20',
                   
'powerdown%20', '/home/ftp', '/home/www', 'secure_site, ok', 'chunked', 'org.apache', '/servlet/con',
                   
'<script', '/robot.txt' ,'/perl' ,'mod_gzip_status', 'db_mysql.inc', '.inc', 'select%20from',
                   
'select from', 'drop%20', '.system', 'getenv', 'http_', '_php', 'php_', 'phpinfo()', "'", '<', '>', 'sql=', '.php/');

$clean_self  = str_replace($clean_rules, '', $clean_self);

///////////   загружаем  форму   ////////////
if (!eregi("%", $TABWIDTH)) $SENDWIDTH = $TABWIDTH-300;
else 
$SENDWIDTH = 300;
include(
"$send_form");

///////////   загружаем содержимое файла базы сообщений   ////////////
$file_array = file("$data");
$lines = count($file_array);

$print_pages = getPages($lines, $page, "$clean_self?", $maxmess);

///////////   печатаем перечень страниц   ////////////
echo "<table bgcolor=$BORDER border=0 cellpadding=2 cellspacing=1 width=100%><tr><td bgcolor=$LIGHT class=pmid align=center><b>Всего сообщений : $lines</b></td></tr><tr><td bgcolor=$LIGHT class=pmid align=center><b>Страницы : |$print_pages</b></td></tr></table>";
echo 
"<table border=0 cellpadding=0 cellspacing=0 width=100% height=4><tr><td height=4></td></tr></table>";

$from = $lines - ($page * $maxmess - 1);
$to = $lines - (($page - 1) * $maxmess);
if(
$from < 0) { $from = 1; }

///////////   печатаем сообщения   ////////////
for($i = $to - 1; $i >= $from - 1; $i--)
        {
        
$id=$i;
        list(
$name,$mess,$mail,$url,$city,$date,$answer) = explode("|", $file_array[$i]);
        if(!(
$name==""&&$mess=="")):
                
$messnum=$id+1;
                
$name = replace_short($name);
                
$mess = replace($mess,"light");
                
$mess = getHTMLtags($mess);
                
$url = replace($url,"dark");
                
$city = replace_short($city);
                
$answer = replace($answer,"answ");
                
mess($name,$mess,$mail,$url,$city,$date,$answer,$messnum);
        endif;
        }

///////////   печатаем перечень страниц и подвал   ////////////
echo "<table bgcolor=$BORDER border=0 cellpadding=2 cellspacing=1 width=100%><tr><td bgcolor=$LIGHT class=pmid align=center><b>Страницы : |$print_pages</b></td></tr><tr><td bgcolor=$LIGHT class=pmid align=center><a href=admin.php></a><a href=readme.html></a><b>Всего сообщений : $lines</b></td></tr></table>";
echo 
"</table><tr><td><table border=0 cellpadding=0 cellspacing=0 width=100% height=2><tr><td height=2></td></tr></table>
<table width=100% border=0 cellspacing=1 cellpadding=3 bgcolor=
$BORDER><tr><td align=center class=pdark bgcolor=$DARK><a href="http://www.sadraven.ru/" title="скачать скрипт гостевой книги" target="_blank" class="dark">SR</a> + <a href="http://www.profy.org/gb/" target="_blank" class="dark">Denied</a> Guestbook $version &copy; 2008</td></tr></table>";
include("$footer");
?>
Онлайн: 0
Реклама