Просмотр файла includes/service/gbfree.php

Размер файла: 8.63Kb
  1. <?php
  2. error_reporting(7);
  3.  
  4. $name=explode('.',$_SERVER['HTTP_X_FORWARDED_HOST']);
  5. $user=strtolower($name[0]);
  6. $domain=strtolower($name[1]);
  7. $path='/home/kmx/www/sites/'.$domain.'/'.$user;
  8. if (!is_dir($path)) {header('Location: http://kmx.ru/?not_found');exit;}
  9.  
  10. $nocache=rand(100,999);
  11.  
  12. include('/home/kmx/includes/function_string.inc');
  13. $site=$user;
  14. $wmlfile='gbfree.wml';
  15. $data['num']=130;
  16. include('/home/kmx/includes/rand_reklama.php');
  17. $reklama=cyr2utf($reklama);
  18.  
  19. touch($path.'/gb-free-setting.dat');
  20. $f=fopen($path.'/gb-free-setting.dat','r+');
  21. $setting[]=trim(fgets($f,65536));
  22. $setting[]=trim(fgets($f,65536));
  23. $setting[]=trim(fgets($f,65536));
  24. $setting[]=trim(fgets($f,65536));
  25. $setting[]=trim(fgets($f,65536));
  26. fopen($f);
  27.  
  28. $name=strtoupper($user).'-Гостевая книга';
  29. if ($setting[0]!='') $name=htmlspecialchars($setting[0]);
  30.  
  31. $begin_text=$setting[1];
  32.  
  33. $end_text=$setting[2];
  34.  
  35. $separate_text='- - - - -';
  36. if ($setting[3]!='') $separate_text=$setting[3];
  37.  
  38. $name=strtoupper($user).'-Гостевая книга';
  39. if ($setting[0]!='') $name=htmlspecialchars($setting[0]);
  40.  
  41. Header("Content-type:text/vnd.wap.wml; charset=Utf-8");
  42. Header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  43. Header("Cache-Control: no-cache, must-relative");
  44.  
  45. $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>';
  46. # if ($offservice) die ($wml.'<card id="gb" title="'.$name.'"><p align="center">Данная услуга автором сайта не заказана...<br/><anchor>Назад<prev/></anchor></p></card></wml>');
  47.  
  48. touch($path.'/gb-free-antiflood.dat');
  49. touch($path.'/gb-free-message.dat');
  50.  
  51. $command=substr($_SERVER['QUERY_STRING'],0,3);
  52.  
  53. if ($command=='nex') $page=$HTTP_GET_VARS['next']+0;
  54. if ($page<1) $page=1;
  55. if ($page>99) $page=1;
  56.  
  57. $userinfo=trim(substr(substr($_SERVER['REMOTE_ADDR'].str_repeat(' ',15),0,15).' '.strtoupper($_SERVER['HTTP_USER_AGENT']),0,68));
  58. $f=fopen($path.'/gb-free-antiflood.dat','r+');
  59. fseek($f,0,SEEK_SET);
  60. $unical=true;
  61. while (!feof($f))
  62. {
  63. $_timestamp=fread($f,10);
  64. $_userinfo=trim(fread($f,70));
  65. if (time()-$_timestamp>900) continue;
  66. $data_unical.=$_timestamp.' '.substr($_userinfo.str_repeat(' ',70),0,68)."\n";
  67. if ($userinfo==$_userinfo) $unical=false;
  68. }
  69. ftruncate($f,0);
  70. fseek($f,0,SEEK_SET);
  71. fwrite($f,$data_unical);
  72. fclose($f);
  73.  
  74. //Рисунки
  75. $i00='<img src="." alt=""/>';
  76. $i01='<img src="/gblogo.gif" alt="logo"/>';
  77.  
  78. //Подпись
  79. #$tm='<br/><br/><small>Сrеаted bу &#xA9;Dиmоn</small>';
  80. $tm='<br/><br/><small>&#xA9;K-Media</small>';
  81.  
  82. //Начало карты
  83. $c01='<card id="chat" title="'.$name.'">';
  84. //Конец карты
  85. $c98='</card>';
  86. //Конец и деки
  87. $c99='</card></wml>';
  88.  
  89. //Параграф с левым выравниванием
  90. $p01='<p align="left">';
  91. //Параграф с центральным выравниванием
  92. $p02='<p align="center">';
  93. //Параграф с правым выравниванием
  94. $p03='<p align="right">';
  95. //Закрыть параграф
  96. $p99='</p>';
  97.  
  98. //Кнопка "назад"
  99. $a01='<br/><anchor>Назад<prev/></anchor>';
  100. //Кнопка "на главную"
  101. $a02='<br/><a href="http://'.$user.'.'.$domain.'.ru" accesskey="#">На главную</a>';
  102. //Кнопка "Обновить"
  103. $a03='<br/><a href="/gbfree.wml" accesskey="1">Обновить</a>';
  104. //Кнопка "Написать"
  105. if ($unical) $a04='<br/><a href="/gbfree.wml?add" accesskey="2">Написать</a>';
  106. //Кнопка "Далее"
  107. $a05='<a href="/gbfree.wml?next='.($page+1).'" accesskey="3">Далее</a>';
  108. //Кнопка "admin"
  109. $a06='<br/><a href="/gbfree.wml?admin" accesskey="0">Управление</a>';
  110. //Кнопка "отправить"
  111. $a07='<br/><anchor>Отправить<go href="/gbfree.wml?post" method="post"><postfield name="n" value="$(gbnick)"/><postfield name="e" value="$(gbemail)"/><postfield name="m" value="$(m'.$nocache.')"/></go></anchor>';
  112.  
  113. //Soft-Кнопка "FAQ"
  114. //Кнопка "Написать"
  115. $faq='<do name="faq" type="options" label="FAQ"><go href="/gbfree.wml?'.$u.'faq"/></do>';
  116. if ($unical) $sk01='<do name="add" type="options" label="Написать"><go href="/gbfree.wml?add"/></do>';
  117.  
  118. //Поле "логин"
  119. $f01='<br/>РќРёРє:<br/><input type="text" name="gbnick" title="РќРёРє" maxlength="16" value=""/>';
  120. //Поле "E-Mail"
  121. $f02='<br/>E-Mail:<br/><input type="text" name="gbemail" title="E-Mail" maxlength="32" value=""/>';
  122. //Поле "Сообщение"
  123. $f03='<br/>Сообщение:<br/><input type="text" name="m'.$nocache.'" title="Сообщение" maxlength="256" value=""/>';
  124.  
  125. //Пустой текст
  126. $t00='';
  127. //Неправильнй логин или пароль
  128. $t01='<b>Стр. '.$page.'</b>';
  129. //Гостевая не чат
  130. $t02='<small>Гостевая книга - не чат! Уложитесь в одно сообщение!</small>';
  131. //Ограничение
  132. $t03='<small>Написание в гостевую ограниченно по времени: не более одного сообщения в 15 минут!</small>';
  133.  
  134. //Таймер обновления
  135. $tm1='<onevent type="ontimer"><go href="/gbfree.wml"/></onevent><timer value="3000"/>';
  136.  
  137. if ($command=='pos')
  138. {
  139. $nick=substr(utf2cyr(str_replace(" ","_",trim(str_replace(" "," ",str_replace("\t"," ",str_replace("\n"," ",str_replace("\r"," ",stripslashes($HTTP_POST_VARS['n'])))))))),0,16);
  140. $email=substr(utf2cyr(str_replace(" ","",trim(str_replace(" "," ",str_replace("\t"," ",str_replace("\n"," ",str_replace("\r"," ",stripslashes($HTTP_POST_VARS['e'])))))))),0,32);
  141. $message=substr(utf2cyr(trim(str_replace(" "," ",str_replace("\t"," ",str_replace("\n"," ",str_replace("\r"," ",stripslashes($HTTP_POST_VARS['m']))))))),0,256);
  142.  
  143. if (($nick!='')&&($message!=''))
  144. {
  145. $message2file=$nick."\t".$email."\t".$message."\n";
  146. $f=fopen($path.'/gb-free-message.dat','r+');
  147. $tmp1=substr(fgets($f,65536),11);
  148. $tmp2=substr(fgets($f,65536),11);
  149. fseek($f,0,SEEK_SET);
  150. $text=fread($f,102400);
  151. fseek($f,0,SEEK_SET);
  152. if (($tmp1!=$message2file)&&($tmp2!=$message2file))
  153. {
  154. if ($unical)
  155. {
  156. fwrite($f,time()."\t".$nick."\t".$email."\t".$message."\n".$text);
  157. $f2=fopen($path.'/gb-free-antiflood.dat','a+');
  158. fwrite($f2,time().' '.substr($userinfo.str_repeat(' ',70),0,68)."\n");
  159. fclose($f2);
  160. }
  161. else die($wml.$c01.$tm1.$faq.$p01.$t03.'<br/>Time Out'.$a01.$tm.$p99.$c99);
  162. }
  163.  
  164. $tr=strlen("\t".$nick."\t".$email."\t".$message."\n".$text)+10;
  165. if ($tr<102400) ftruncate($f,$tr);
  166. else ftruncate($f,102400);
  167. fclose($f);
  168. }
  169. unset($text,$data_unical,$message2file,$tmp1,$tmp2,$userinfo,$_userinfo);
  170. $command='';
  171. }
  172.  
  173. if (($command=='')||($command=='nex'))
  174. {
  175. $f=fopen($path.'/gb-free-message.dat','r+');
  176. fseek($f,0,SEEK_SET);
  177. $cntpage=1;
  178. $screen='';
  179. while ($cntpage<=$page)
  180. {
  181. while (true)
  182. {
  183. if ((feof($f))&&($cntpage<$page)) $t01='<b>Стр. '.$cntpage.'</b>';
  184. if (feof($f)) die($wml.$c01.$tm1.$faq.$sk01.$p02.'<small>'.$reklama.'</small><br/>'.$t01.$p99.$p01. $screen .$a05.$a04.$a02.$tm.$p99.$c99);
  185. $printmsg='';
  186. $tmpa=explode("\t",fgets($f,65536),5);
  187. if (($tmpa[0]=='')||($tmpa[1]=='')||($tmpa[3]=='')) continue;
  188. $printmsg='<u><b>'.cyr2utf(str_replace("$","$$",htmlspecialchars($tmpa[1]))).'</b> '.date("j.m G:i",$tmpa[0]).'</u>';
  189. if ($tmpa[2]!='') $printmsg.=' <br/><small>'.cyr2utf(str_replace("$","$$",htmlspecialchars($tmpa[2]))).' </small>';
  190. $printmsg.=' <br/>'.cyr2utf(str_replace("$","$$",htmlspecialchars(trim($tmpa[3]))));
  191. if ($tmpa[4]!='') $printmsg.=' <br/>'.cyr2utf('<b>Ответ:</b> '.str_replace("$","$$",htmlspecialchars($tmpa[4])));
  192. $printmsg.=' <br/>'.cyr2utf(str_replace("$","$$",htmlspecialchars($separate_text))).' <br/> <br/>';
  193. if (strlen($screen.$printmsg)>2300)
  194. {
  195. if ($cntpage==$page) die($wml.$c01.$tm1.$faq.$sk01.$p02.'<small>'.$reklama.'</small><br/>'.$t01.$p99.$p01. $screen .$a05.$a04.$a02.$tm.$p99.$c99);
  196. else break;
  197. }
  198. $screen.=$printmsg;
  199. }
  200. $screen='';
  201. $cntpage++;
  202. }
  203. }
  204.  
  205. if ($command=='add')
  206. {
  207. if ($unical) die($wml.$c01.$p01.$t02.$f01.$f02.$f03.$a07.$a01.$tm.$p99.$c99);
  208. else die($wml.$c01.$tm1.$p01.$t03.'<br/>Time Out'.$a01.$tm.$p99.$c99);
  209. }
  210.  
  211. if ($command=='faq')
  212. die($wml.$c01.$p01.
  213. 'Онлайн общение в гостевых запрещено! Гостевая книга - не чат! По этой причине написание в гостевую ограничивается по времени на 15 минут.<br/>'.
  214. 'В гостевой хранится 100kb сообщений (выделяется из лимита сайта). По достижении этого предела, самые старые сообщения будут вытесняться.<br/>'.
  215. 'Ручная очистка пока не реализована.<br/>'.
  216. $a01.$tm.$p99.$c99);
  217.  
  218. die($wml.$c01.$p01."Неопознанная ошибка!".$a01.$tm.$p99.$c99);
  219. ?>