Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 7 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 27.12.2005
Откуда: Planet Earth
люди, помогите к гостевой книге на флаш+пхп+txt(file) флуд контрол написать. это вообще возможно? мне надо, чтобы можно было постить определенное количество постов например 1 сообщение в день. - is it possible ?
СПАСИБО!!

или придложите что-то другое на флаш+пхп можно с датабазой, не имеет значения ..




+
помогите с ГМТ разобраться в коде

Код:
extract($HTTP_POST_VARS);
header("Expires: ".gmdate("D, d M Y H:i:s", time() + 3600)."GMT");
header("Cache-Control: no-cache, must-revalidate");


это , time() + 3600) на работает почему-то :-( нужно чтобы было ГМТ +2.



СПАСИБО!!



Партнер
 

Member
Статус: Не в сети
Регистрация: 27.12.2005
Откуда: Planet Earth
может кто осмелится, что-то сказать по этому поводу ? проект стоит .. :(


 

Member
Статус: Не в сети
Регистрация: 10.12.2003
Откуда: Харьков
ну я попробую.
ну проще всего вешать человеку куку со временем жизни в 1 день. Значение её не имеет вобщемто значения, можно допустим 1.
В том случае, если челове, который постит уже имеет эту куку - отказывать ему в обслуживании. Правда если он зачитст или отключит куки или сменит компьютер/пользователя - всё пропало.
Назначить эту куку можно следующим кодом:
Код:
setcookie ( 'my_cookie_name', "1" , (time()+3600) , "/");

Идентификация флуда в данном случае должна проходить примерно следующим путём:

Код:
if(isset($_COOKIE['my_cookie_name'])){
   #код, которым ты будешь материть флудеров
}else{
#код, которым будет добавлять пост, видимо он уже у тебя есть
}

Собственно setcookie нужно помещать в секцию else
Ну это был самый простой ваиант.
©annabis писал(а):
header("Expires: ".gmdate("D, d M Y H:i:s", time() + 3600)."GMT");

Текущая таймзона должна быть установленна программно или в настройках сервера.
например так
Код:
setlocale(LC_TIME, 'en_US');

Таким образом ты должен указать таймзону сервера на котором хостится сайт. Это был пример для штатов. Кажется локаль должна быть настроена ещё хостером. Однако её мона сфорсировать.
Вот например для россии и украины.
Код:
setlocale (LC_TIME, array ('uk_UA.cp1251'));
setlocale (LC_TIME, array ('ru_RU.cp1251'));

Хотя насчёт россии я не уверен, в отличии от Украниы там много таймзон.
Если ты не можешь вычислить локаль - то не пользуйся gmdate а пользуй strftime, а в ней просто вычти 2 часа в секундах от time()
Добавлено спустя 12 минут, 21 секунду
Кстати имена локализаций могут отличаться в плане отсутствия или наличия на сервере какйто либо. Это зависит в первую очередь от версии/типа OC. Например в линухе нет некоторых локализаций, что есть в FreeBSD. знать какие есть можно с помощью unix команды locale -a, лежат файлы физически в каталоге /usr/share/locale , их мона самому докладывать вручную. Как смотреть в винде не имею понятия. Но вроде php тянет стандартные локализации, которые зарегестрированы в винде и доступны через контрол панель - региональные настройки, но за это не ручусь
Добавлено спустя 24 минуты, 25 секунд
ну собственно для расмотрения других вариантов нет достаточной информации о системе. Да и в форуме помочь создать такую систему невозможно учитывая как я понял неглубокие знания автора.
Чтож, у тебя есть повод научиться чемуто полезному, например выучить php. :-)


 

Member
Статус: Не в сети
Регистрация: 27.12.2005
Откуда: Planet Earth
2 Vinni

чего-то не получается. Вот основной код шаутбокса .. куда здесь вставлять, сори взялса за проект .. а в области кода не силён. СПАСИБО!

Код:
<?php
extract($HTTP_GET_VARS);
extract($HTTP_POST_VARS);
header("Expires: ".gmdate("D, d M Y H:i:s", time() + 3600)."GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
---------setcookie ( 'my_cookie_name', "1" , (time()+3600) , "/"); ------------
?>
<?php
$nickname = str_replace ("\n"," ", $nickname);
$nickname = str_replace ("<", " ", $nickname);
$nickname = str_replace (">", " ", $nickname);
$nickname = str_replace ("fuck", "-", $nickname);
$nickname = str_replace ("suck", "-", $nickname);
$nickname = str_replace ("ass", "-", $nickname);
$nickname = str_replace ("&", "and", $nickname);
$nickname = stripslashes ($nickname);
$message = str_replace ("\n"," ", $message);
$message = str_replace ("<", " ", $message);
$message = str_replace ("&","and", $message);
$message = str_replace ("fuck", "-", $message);
$message = str_replace ("suck", "-", $message);
$message = stripslashes ($message);
$p=gmdate("d M H:i");
?>
&output=
<?php
$chat_file = "shout.txt";
$chat_lenght = 40;
$max_single_msg_lenght = 1000;
$max_file_size = $chat_lenght * $max_single_msg_lenght;
$file_size= filesize($chat_file);
if ($file_size > $max_file_size) {
$lines = file($chat_file);
$a = count($lines);
$u = $a - $chat_lenght;
for($i = $a; $i >= $u ;$i--){
$msg_old =  $lines[$i] . $msg_old;
}
$deleted = unlink($chat_file);
$fp = fopen($chat_file, "a+");
$fw = fwrite($fp, $msg_old);
fclose($fp);
}
$msg = str_replace ("\n"," ", $message);
$msg = stripslashes ($msg);
if ($msg != ""){
$fp = fopen($chat_file, "a+");
$fw = fwrite($fp, "<font color=\"#FFFFFF\"><b>$nickname:($p)<br></b></font> $msg\n");
fclose($fp);}
$lines = file($chat_file);
$a = count($lines);
$u = $a - $chat_lenght;
for($i = $a; $i >= $u ;$i--){
echo $lines[$i];
}
-------------- if(isset($_COOKIE['my_cookie_name'])){
}else{
} ---------------------
?>


 

Member
Статус: Не в сети
Регистрация: 10.12.2003
Откуда: Харьков
Код:
<?php
#gmt hours shift
$timezone_hours_shift = 2;
header("Expires: ".date("D, d M Y H:i:s", (time() + 3600 - (3600*$timezone_hours_shift)))."GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

function post_message($chat_file, $chat_lenght, $nickname, $message){
   $p = gmdate("d M H:i");
   $max_single_msg_lenght = 1000;
   $max_file_size = $chat_lenght * $max_single_msg_lenght;
   $file_size = filesize($chat_file);
   if ($file_size > $max_file_size) {
      $lines = file($chat_file);
      $a = count($lines);
      $u = $a - $chat_lenght;
      for($i = $a; $i >= $u ;$i--){
         $msg_old =  $lines[$i] . $msg_old;
      }
      $deleted = unlink($chat_file);
      $fp = fopen($chat_file, "a+");
      $fw = fwrite($fp, $msg_old);
      fclose($fp);
   }

   if ($message != ""){
      $fp = fopen($chat_file, "a");
      $fw = fwrite($fp, "<font color=\"#FFFFFF\"><b>$nickname:($p)<br></b></font> $message\n");
      fclose($fp);
   }
}
?>
<?php
$repl_arr = array(
"\n" => " ",
"fuck" => "-",
"suck" => "-",
"ass" => "-",
);
$nickname = null;
$message = null;
if(isset($_REQUEST['nickname'])){
   $nickname = str_replace(array_keys($repl_arr), array_values($repl_arr), $_REQUEST['nickname']);
   $nickname = htmlspecialchars($nickname);

   $message = get_magic_quotes_gpc() ? stripslashes($_REQUEST['message']) : $_REQUEST['message'];
   $message = str_replace(array_keys($repl_arr), array_values($repl_arr), $message);
   $message = strip_tags($message);
}

$chat_file = "shout.txt";
$chat_lenght = 40;

if(!empty($message) && !empty($nickname)){
   if(!isset($_COOKIE['lpost_counter']) || true){
      !headers_sent() && setcookie ('lpost_counter', "1" , (time()+3600) , "/");
      post_message($chat_file, $chat_lenght, $nickname, $message);
   }
}
?>
&output=
<?php
$lines = file($chat_file);
$a = count($lines);
$u = $a - $chat_lenght;
for($i = $a; $i >= $u ;$i--){
   echo urlencode($lines[$i]);
}
?>

Вот, прилизал слегка, куку докрутил.
должно работать. Если флеш не будет понимать код - убери слово urlencode в предпоследней строке


 

Member
Статус: Не в сети
Регистрация: 10.12.2003
Откуда: Харьков
ой, стой, зметил тестовую заглушку в строке:
Код:
if(!isset($_COOKIE['lpost_counter']) || true){


Убери
Код:
|| true


 

Member
Статус: Не в сети
Регистрация: 27.12.2005
Откуда: Planet Earth
Спасибо! Умный и добрый человек! Респектб однозначно :)


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 7 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan