За последние 24 часа нас посетили 55404 программиста и 1793 робота. Сейчас ищут 752 программиста ...

Как реализовать проверку

Тема в разделе "JavaScript и AJAX", создана пользователем ruslite, 22 фев 2014.

  1. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    Всем привет. Вот есть проверка на пустоту данных.
    Код (Text):
    1. if((nameVal) && (msg)){
    2.     socket.emit( 'message', { name: nameVal, message: msg } )};
    Интересует как реализовать следующее:
    Код (Text):
    1. if((nameVal) && (msg)){
    2.     //сюда добавить переменную, которая будет прибавлять к текущем времени 3 секунды.
    3.     socket.emit( 'message', { name: nameVal, message: msg } )};
    И надо реализовать проверку, что текущее время больше того времени, которое было прибавлено.
    т.е. я делаю проверку от флуда и сообщение нельзя отправлять чаще, чем каждые 3 секунды. Помогите пожалуйста. Может надо по другому?
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    (nameVal) && (msg)
    В скобках пишите, чтобы проверенее проверенного было? :D
    Вообще переменные так не проверяются на пустоту ибо есть typeof и undefined.
    И скобки лишнее...
     
  3. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    скобки уберу, но вопрос то в другом.
     
  4. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    По-другому в отличие от чего? Где хоть какое-то решение? А то показаны какие-то странные проверки и далее какой-то сокет.

    Вообще нужно от чего-то отталкиваться, где-то хранить время отсчета (время предыдущего действия), с которым можно сравнивать текущее время. За 3 секунды скрипт может выполниться тысячи раз, и вызывать его могут с разных адресов тысячи клиентов.

    Если скрипт не должен часто выполнять полезное действие для всех клиентов, то можно сохранять предыдущее время в файле. Если для каждого клиента, то в сессиях.

    Смотри функцию time()
     
  5. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    В js это:
    Код (PHP):
    1. var date=new Date(серверное время);
    2. date.getTime(); 
    Но беда, беда, нужно отталкиваться от серверного времени иначе оно будет у всех разное.
     
  6. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    Да надо серверное время и наверно записывать в сессии. Суть такова, что сообщение человек не мог отправить чаще чем каждые 2 секунды. Это чат. А строчка которую я скидывал просто выполняет функцию отправки сообщения. Обычный сокет. Найти бы пример.
     
  7. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Обычный таймер, ничего сложного..
    Типа отправил задисайбилось: "поле, кнопка" и ниже "2, 1, 0", раздисайбилось!
    А в случае если, что-то не так, то на сервере скажет ему в лобешник, что не катит только через 2 сек.
     
  8. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    можете скинуть хоть какой-нибудь кусочек кода? или ссылку про это. Очень уж надо..
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. function time(time) {
    2.     var timer=setInterval(function() {
    3.         if(0===time) {
    4.             clearInterval(timer);
    5.         } else {
    6.             --time;
    7.         }
    8.     },1000);
    9. } 
     
  10. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    спасибо, буду пробовать.