Вход Регистрация
Файл: includes/service/chat10.php
Строк: 184
<?php
error_reporting
(7);

$name=explode('.',$_SERVER['HTTP_X_FORWARDED_HOST']);
$user=strtolower($name[0]);
$domain=strtolower($name[1]);
$path='/home/kmx/www/sites/'.$domain.'/'.$user.'/';
if (!
is_dir($path.'.')) {header('Location: http://kmx.ru/?not_found');exit;}

$nocache=rand(1000,9999);

$f=@fopen($path.'services.dat','r');
$servicelist=@fread($f,1024);
@
fclose($f);
$offservice=(!strpos(';'.$servicelist.';''chat10;'));

$name=strtoupper($user).'-чат';

Header("Content-type:text/vnd.wap.wml; charset=Utf-8");
Header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
Header("Cache-Control: no-cache, must-relative");

$wml="<?xml version="1.0" encoding="Utf-8"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" "http://www.wapforum.org/DTD/wml_1.2.xml"><wml>";
if ($offservice) die ($wml.'<card id="chat" title="'.$name.'"><p align="center">Данная СѓСЃР»СѓРіР° Р°РІС‚РѕСЂРѕРј СЃР°Р№С‚Р° РЅРµ Р·Р°РєР°Р·Р°РЅР°...<br/><anchor>Назад<prev/></anchor></p></card></wml>');

touch($path."chat.msg");
if (!
file_exists($path."chat.usr"))
    {
    
define("DBName","kmx");
    
define("HostName","localhost");
    
define("UserName","kmx");
    
define("Password","kmx-hosting");

    
$connectserv=@mysql_connect(HostNameUserNamePassword);
    
$selectDB=@mysql_select_db(DBName);
    
$connect_bd=(($connectserv!=0)&&($selectDB!=0));

    if (!
$connect_bd) include($rootpath."mysqlerror.php");

    
$q=@mysql(DBName,"SELECT `pass` FROM `users` WHERE `domain` = '".addslashes($domain)."' AND `login` = '".addslashes($user)."' LIMIT 0, 1");
    
$data=mysql_fetch_array($q);
    
$pass=$data['pass'];
    
$f=fopen($path.'chat.usr','w+');
    
fwrite($f,$user."t".$pass."t3t99999n");
    
fclose($f);
    }
touch($path."chat.cus");

$u=$_SERVER['QUERY_STRING'];
if (
$HTTP_POST_VARS['u']!=''$u=$HTTP_POST_VARS['u'];

$u=urldecode($u);
$b=explode(":",str_replace("t"," ",str_replace("n"," ",str_replace("$","$$",htmlspecialchars(stripslashes($u))))),5);

$l=trim($b[0]);
$p=trim($b[1]);
$c=trim($b[2]);
$r=trim($b[3]);
$m=trim($b[4]);

#print_r($b);
# $l - логин
# $p - пароль
# $c - команда
# $r - получатель
# $m - сообщение

//Рисунки
$i00='<img src="." alt=""/>';
$i01='<img src="/chatlogo.gif" alt="logo"/>';

//Подпись
#$tm='<br/><br/><small>РЎrеаted bСѓ &#xA9;DРёmРѕn</small>';
$tm='<br/><br/><small>&#xA9;K-Media</small>';

//Начало карты
$c01='<card id="chat" title="'.$name.'">';
//Конец карты
$c98='</card>';
//Конец и деки
$c99='</card></wml>';

//Параграф с левым выравниванием
$p01='<p align="left">';
//Параграф с центральным выравниванием
$p02='<p align="center">';
//Параграф с правым выравниванием
$p03='<p align="right">';
//Закрыть параграф
$p99='</p>';

$u=urlencode(html_entity_decode($l)).':'.urlencode(html_entity_decode($p)).':';
#$u=html_entity_decode($l.':'.$p.':');
#$u=$l.':'.$p.':';
//Кнопка "назад"
$a01='<br/><anchor>Назад<prev/></anchor>';
//Кнопка "на главную"
$a02='<br/><a href="http://'.$user.'.'.$domain.'.ru" accesskey="#">РќР° РіР»Р°РІРЅСѓСЋ</a>';
//Кнопка "войти"
$a03='<br/><anchor>Войти<go href="/chat10.srv" method="post" accept-charset="UTF-8"><postfield name="u" value="$(l'.$nocache.'):$(p'.$nocache.'):read"/></go></anchor>';
//Кнопка "регистрация"
$a04='<br/><anchor>Регистрация<go href="/chat10.srv" method="post" accept-charset="UTF-8"><postfield name="u" value="$(l'.$nocache.'):$(p'.$nocache.'):new"/></go></anchor>';
//Кнопка "обновить"
$a05='<br/><a href="/chat10.srv?'.$u.'read" accesskey="1">Обновить</a>';
//Кнопка "написать"
$a06='<br/><a href="/chat10.srv?'.$u.'write" accesskey="2">Написать</a>';
//Кнопка "выйти"
$a07='<br/><a href="/chat10.srv?'.$u.'quit"  accesskey="*">Выйти</a>';
//Кнопка "отправить"
$a08='<br/><anchor>Отправить<go href="/chat10.srv" method="post" accept-charset="UTF-8"><postfield name="u" value="'.$l.':'.$p.':post:$(t'.$nocache.'):$(m'.$nocache.')"/></go></anchor>';
//Кнопка "кто тут?"
$a09='<br/><a href="/chat10.srv?'.$u.'who" accesskey="3">Кто С‚СѓС‚?</a>';

//Soft-Кнопка "обновить"
$s01='<do name="a1" type="options" label="Обновить"><go href="/chat10.srv?'.$u.'read"/></do>';
//Soft-Кнопка "написать"
$s02='<do name="a2" type="options" label="Написать"><go href="/chat10.srv?'.$u.'write"/></do>';
//Soft-Кнопка "кто тут?"
$s03='<do name="a3" type="options" label="Кто С‚СѓС‚?"><go href="/chat10.srv?'.$u.'who"/></do>';
//Soft-Кнопка "FAQ"
$faq='<do name="a9" type="options" label="FAQ"><go href="/chat10.srv?'.$u.'faq"/></do>';

//Поле "логин"
$f01='<br/>Логин:<br/><input type="text" name="l'.$nocache.'" title="Логин" maxlength="16" value="'.$l.'"/>';
//Поле "пароль"
$f02='<br/>Пароль:<br/><input type="text" emptyok="false" name="p'.$nocache.'" title="Пароль" maxlength="10" value=""/>';
//Поле "сообщение"
$f03='Сообщение:<br/><input name="m'.$nocache.'" type="text" title="Сообщение" value="" maxlength="150"/>';

//Пустой текст
$t00='';
//Неправильнй логин или пароль
$t01='Неправильный Р»РѕРіРёРЅ РёР»Рё РїР°СЂРѕР»СЊ!';
//Не указан логин или пароль
$t02='РќРµ СѓРєР°Р·Р°РЅ Р»РѕРіРёРЅ РёР»Рё РїР°СЂРѕР»СЊ!';
//Вы успешно зарегистрированы
$t03='Р’С‹ СѓСЃРїРµС€РЅРѕ Р·Р°СЂРµРіРёСЃС‚рированы!';
//Доступ временно закрыт
$t04='<b>Доступ РІСЂРµРјРµРЅРЅРѕ Р·Р°РєСЂС‹С‚.</b>';

//Таймер обновления
$tm1='<onevent type="ontimer"><go href="/chat10.srv?'.$u.'read"/></onevent><timer value="600"/>';

$st=1;
//Авторизация
$f=fopen($path."chat.usr","r");
$tl=$tp=false;
while (!
$tl and !feof($f))
    {
    
$tu=fgets($f,1024);$b=explode("t",$tu);
    
$cl=$b[0]; //логин
    
$cp=$b[1]; //пароль
    
$st=$b[2]; //статус
    
$lt=$b[3]; //последний тайм-штамп
    
if ($cl==trim($l)) {$tl=true;$tp=($cp==trim($p));}
    }
fclose($f);

# Не был на сайте более 100000 секунд - обновляем
if (substr(time(),0,5)>substr($lt,0,5))
    {
    
$t=file($path."chat.usr");
    
$f=fopen($path."chat.usr","w+");
    for (
$i=0;$i<sizeof($t);$i++)
        {
        
$b=explode("t",$t[$i]);
        
fwrite($f,$b[0]."t".$b[1]."t".$b[2]."t".substr(time(),0,5)."tn");
        }
    
flock($f,3); fclose($f);
    }

$ta=$tl&&$tp;
# $tl - существование логина
# $tp - совпадение пароля
# $ta - успешность авторизации

//Первый вход
if (($c!='new')&&(($p=='')&&($l==''))||($c=='quit')) die($wml.$c01.$p02.$i01.$t00.$f01.$f02.$a03.$a04."<br/>".$a01.$a02.$tm.$p99.$c99);

//Добавление пользователя (новый логин, логин и пароль не пустые)
if (($c=='new')&&!$tl&&($p!='')&&($l!='')) {$f=fopen($path."chat.usr","a");fputs($f,trim($l)."t".trim($p)."t1tn");fclose($f);$ta=true;}

//Добавление пользователя (логин или пароль пустые)
if (($c=='new')&&(($p=='')||($l==''))) die($wml.$c01.$p02.$i00.$t02.$f01.$f02.$a03.$a04."<br/>".$a01.$a02.$tm.$p99.$c99);

//Добавление пользователя (логин и пароль существуют и верны)
if (($c=='new')&&$ta) die($wml.$c01.$p02.$i00.$t03.$a03."<br/>".$a01.$a02.$tm.$p99.$c99);

//Аторизация не прошла
if (($c!='new')&&!$ta) die($wml.$c01.$p02.$i00.$t01.$f01.$f02.$a03.$a04."<br/>".$a01.$a02.$tm.$p99.$c99);

//Доступ запрещен
if ($st==0) die($wml.$c01.$p02.$t04.$a01.$p99.$c99);

//Обновление текущего списка посетителей
$f=fopen($path."chat.cus","r+");
$t=file($path."chat.cus");
unset(
$cu);
flock($f,LOCK_EX);
$f=fopen($path."chat.cus","w");
$cu[]=$l;
for (
$i=0;$i<sizeof($t);$i++)
    {
    
$s=explode("t",$t[$i]);
    if ((
$s[0]<time())||($s[1]==$l)||($s[1]=="")) continue;
    
fwrite($f,$s[0]."t".$s[1]."tn");
    
$cu[]=$s[1];
    }
fwrite($f,(time()+300)."t".$l."tn");
flock($f,3);fclose($f);

//Выбор "Кому"
$v01='<br/>РљРѕРјСѓ:<br/><select name="t'.$nocache.'" title="РљРѕРјСѓ" value=""><option value="">-всем-</option>';
for (
$i=0;$i<sizeof($cu);$i++) $v01.='<option value="'.$cu[$i].'">'.$cu[$i].'</option>';
$v01.='</select>';

if (
$c=='write') die($wml.$c01.$oe1.$p02.$f03.$v01.$a08."<br/>".$a01.$a07.$tm.$p99.$c99);

if (
$c=='who')
    {
    
$cu=implode("<br/>",$cu);
    die(
$wml.$c01.$p02."<b>Р’ РєРѕРјРЅР°С‚Рµ:</b><br/>".$cu.$a01.$tm.$p99.$c99);
    }

if (
$c=='post')
    {
    
$xl=$l;    $xr=$r;    $xm=$m;
    if (
substr($m,0,1)=='#')
        {
        
$m=explode(" ",$m,2);
        
# Если младше чем модер
        
if (($st<2))
            {
            
# То выводим "Выполнение команд Вам недоступно"
            
$xl=""$xr=$l$xm="<b>Выполнение РєРѕРјР°РЅРґ РІР°Рј РЅРµРґРѕСЃС‚СѓРїРЅРѕ.</b><!--".rand(100,999)."-->";
            }
        else
            {
            
# Иначе обрабатываем команду
            
switch ($m[0])
                {
                
# Если #CLS - очищаем файл сообщений
                
case "#cls" :
                    {
                    
$f=fopen($path."chat.msg","w");fclose($f);
                    
$xl="";
                    
$xr="";
                    
$xm="<b>".$l." РѕС‡РёСЃС‚РёР»(Р°) СЃРїРёСЃРѕРє СЃРѕРѕР±С‰РµРЅРёР№.</b>";
                    break;
                    }
                
# Если #ADMIN - очищаем файл сообщений
                
case "#admin" :
                    {
                    
$f=fopen($path."chat.msg","w");fclose($f);
                    
$xl="";
                    
$xr=$l;
                    
$xm="<b>Р’ С‡РµС‚Рµ РµРґРёРЅСЃС‚венный Р°РґРјРёРЅРёСЃС‚ратор: ".$user.".</b>";
                    break;
                    }
                
# Если операция над логином
                
case "#del" :
                case 
"#ban" :
                case 
"#user" :
                case 
"#moder" :
                    {
                    
# Если логин-объект не указан явно, то берем из поля "кому"
                    
if ($r==""$r=$m[1];
                    
# Если логин-объект не определен, то выводим "Не указан логин"
                    
if ($r=="")
                        {
                        
$xl="";
                        
$xr=$l;
                        
$xm="<b>РќРµ СѓРєР°Р·Р°РЅ Р»РѕРіРёРЅ.</b><!--".rand(100,999)."-->";
                        break;
                        }
                    
# Иначе работаем с логином
                    
elseif ($l==$r)
                        {
                        
$xl="";
                        
$xr=$l;
                        
$xm="<b>Выполнение РєРѕРјР°РЅРґ РЅР° СЃРµР±СЏ Р·Р°РїСЂРµС‰РµРЅРѕ!</b><!--".rand(100,999)."-->";
                        break;
                        }
                    else
                        {
                        
# Сохраняем список пользователей в массив
                           
$t=file($path."chat.usr");
                           
# Пересоздаем файл пользователей и открываем на запись
                           
$f=fopen($path."chat.usr","r+");
                           
flock($f,LOCK_EX);
                           
$f=fopen($path."chat.usr","w+");
                        
# Перебираем пользователей
                        
for ($i=0;$i<sizeof($t);$i++)
                               {
                               
$b=explode("t",$t[$i]);
                               
$tl=$b[0]; //логин
                               
if ($tl=='') continue;
                               
$tp=$b[1]; //пароль
                               
$ts=$b[2]; //статус
                               
$tlt=$b[3]; //тайм-штамп
                            # Если пользователь не тот, что нам нужен, то переходим к следующему
                            
if ($tl!=$r)
                                {
                                
fwrite($f,$tl."t".$tp."t".$ts."t".$tlt."tn");
                                continue;
                                }
                            
# Если назначаем модера, и наш статус 'Админ', то меняем статус логина на 2 ('Модер')
                               
if (($m[0]=="#moder")&&($st=3))
                                {
                                
$ts=2;
                                
$xl="";
                                
$xr="";
                                
//$l." naznachil(a) ".$r." moderatorom
                                
$xm="<b>".$l." РЅР°Р·РЅР°С‡РёР»(Р°) ".$r." РјРѕРґРµСЂР°С‚РѕСЂРѕРј.</b><!--".rand(100,999)."-->";
                                }
                            
# Если назначаем юзера, и наш статус 'Модер' и выше, а статус пользователя меньше нашего, то меняем статус логина на 1 ('Юзер')
                               
elseif (($m[0]=="#user")&&($st>$ts)&&($st>1))
                                {
                                
$ts=1;
                                
$xl="";
                                
$xr="";
                                
//$l." naznachil(a) ".$r." pol'zovatelem
                                
$xm="<b>".$l." РЅР°Р·РЅР°С‡РёР»(Р°) ".$r." РїРѕР»СЊР·РѕРІР°С‚елем.</b><!--".rand(100,999)."-->";
                                }
                            
# Если назначаем бан, и наш статус 'Модер' и выше, а статус пользователя меньше нашего, то меняем статус логина на 0 ('Бан')
                               
elseif (($m[0]=="#ban")&&($st>$ts)&&($st>1))
                                   {
                                   
$ts=0;
                                   
$xl="";
                                   
$xr="";
                                   
//$l." zablokiroval(a) login ".$r
                                
$xm="<b>".$l." Р·Р°Р±Р»РѕРєРёСЂРѕРІР°Р»(Р°) Р»РѕРіРёРЅ ".$r.".</b><!--".rand(100,999)."-->";
                                }
                            
# Если удаляем запись, и наш статус 'Модер' и выше, а статус пользователя меньше нашего, то переходим к следующему пользователю
                               
elseif (($m[0]=="#del")&&($st>$ts)&&($st>1))
                                {
                                
$xl="";
                                
$xr="";
                                
//$l." udalil(a) login ".$r
                                
$xm="<b>".$l." СѓРґР°Р»РёР»(Р°) Р»РѕРіРёРЅ ".$r.".</b><!--".rand(100,999)."-->";
                                continue;
                                }
                            elseif ((
$st<=$ts))                    {       $xl=""$xr=$l$xm="<b>Недостаточно РїСЂР°РІ.</b><!--".rand(100,999)."-->";                                 }//Nedostatochno prav
                            
if ($tl!=''fwrite($f,$tl."t".$tp."t".$ts."t".$tlt."tn");
                            }
                        
flock($f,3); fclose($f);
                        }
                    break;
                    }
                
# Если команда не обработана...
                
default :
                    {
                    
$xl="";
                    
$xr=$l;
                    
$xm="<b>Неверно СѓРєР°Р·Р°РЅР° РєРѕРјР°РЅРґР°.</b><!--".rand(100,999)."-->";
                    break;
                    }
                }
            }
        }

    
$f=file($path."chat.msg");
    for (
$i=0;$i<10;$i++) {$p=explode("t",$f[$i]); if ($p[3]==$xm$xm="";}
    
$f=fopen($path."chat.msg","r+");
    
flock($f,2);
    
$wt=date("H:i")."t".$xl."t".$xr."t".$xm."tn".fread($f,8192);
    
fseek($f,0);
    if (
$xm!=""fwrite($f,substr($wt,0,8192));
    
flock($f,3);
    
fclose($f);
    
$c='read';
    }

if (
$c=='read')
    {
    
$f=file($path."chat.msg");
    unset(
$m);
    for (
$i=0;$i<sizeof($f);$i++)
        {
        
$p=explode("t",$f[$i]);
        if ((
$p[1]!=$l)&&($p[2]!=$l)&&($p[2]!="")) continue;
        if (
$p[2]==""$mt=$p[0]." <b><u>".$p[1]."</u>&gt;</b> ".$p[3]."<br/>";
        if (
$p[2]!=""$mt=$p[0]." <b><u>".$p[1]."&#xE410;".$p[2]."</u>&gt;</b> ".$p[3]."<br/>";
        if (
strlen($m.$mt)<=1800$m.=$mt;
        }
    die(
$wml.$c01.$tm1.$s01.$s02.$s03.$faq.$p01.$m.$a05.$a06.$a09.$a07.$tm.$p99.$c99);
    }

if (
$c=='faq')
die(
$wml.$c01.$p01.
'<u>Команды С‡Р°С‚Р°:</u><br/>'.
'Для РїРѕР»СЊР·РѕРІР°С‚елей - РЅРµС‚<br/>'.
'Для РјРѕРґРµСЂР°С‚РѕСЂРѕРІ Рё Р°РґРјРёРЅРѕРІ:<br/>'.
'Удаление СЂРµРіРёСЃС‚рации - #del login<br/>'.
'Запрет РЅР° РІС…РѕРґ (ban) - #ban login<br/>'.
'Снятие Р±Р°РЅР° - #user login<br/>'.
'Очистка РєРѕРјРЅР°С‚С‹ - #cls.<br/>'.
'Для Р°РґРјРёРЅРѕРІ:<br/>'.
#'Назначение Р°РґРјРёРЅРёСЃС‚ратора - #admin login<br/>'.
'Назначение РјРѕРґРµСЂР°С‚РѕСЂР° - #moder login<br/>'.
'Разжалование РґРѕ РїРѕР»СЊР·РѕРІР°С‚еля - #user login<br/>'.
'Если РїРѕР»СЊР·РѕРІР°С‚ель РЅР°С…одится РІ С‡Р°С‚Рµ, С‚Рѕ РјРѕР¶РЅРѕ РµРіРѕ '.
'логин РІС‹Р±РёСЂР°С‚СЊ РёР· СЃРїРёСЃРєР° "РєРѕРјСѓ".<br/>'.
$a10.$a01.$tm.$p99.$c99);

die(
$wml.$c01.$p01."Неопознанная РѕС€РёР±РєР°!".$a01.$tm.$p99.$c99);
?>
<u>Команды чата:</u><br/>
Для пользователей - нет<br/>
Для модераторов и админов:<br/>
Удаление регистрации - #del login<br/>
Запрет на вход (ban) - #ban login<br/>
Снятие бана - #user login<br/>
Очистка комнаты - #cls.<br/>
Для админов:<br/>
Назначение администратора - #admin login<br/>
Назначение модератора - #moder login<br/>
Разжалование до пользователя - #user login<br/>
Если пользователь находится в чате, то можно его
логин выбирать из списка "кому".
Онлайн: 2
Реклама