Активное отслеживание пользователей, сессии PHP - PullRequest
0 голосов
/ 13 июня 2010

Хорошо, я пытаюсь поработать над функцией подсчета активных пользователей в приложении на основе AJAX.Я хочу выразить приведенный ниже SQL-запрос в правильном синтаксисе, но я не уверен, как его написать.Требуемый SQL-запрос приведен ниже:

SELECT count(*)
FROM active WHERE timestamp > time() - 1800
     AND nick=(a string that doesn't contain [AFK])

Теперь я понимаю, что time () - 1800 можно присвоить переменной, но как это timestamp > variable и ник, который не содержит строкув SQL?

Ответы [ 4 ]

2 голосов
/ 13 июня 2010
SELECT count(*)
FROM active WHERE timestamp > unix_timestamp() - 1800
     AND nick NOT LIKE '%[AFK]%'
0 голосов
/ 13 июня 2010

ВЫБЕРИТЕ СЧЕТЧИК (*) ОТ активного ГДЕ отметка времени> DATE_ADD (NOW (), INTERVAL -1800 SECOND) И ник NOT LIKE '% [AFK]%'

0 голосов
/ 13 июня 2010

Что касается имени пользователя, вы должны отфильтровать каждую переменную перед тем, как поместить ее в SQL-запрос ( SQL Injection ).

$nick =  mysql_escape_string($nick);

, а затем в запросе sql:

$sql = "SELECT count(*) FROM `active` WHERE `timestamp` > (time() - 1800) AND `nick` = '{$nick}' AND `nick` NOT LIKE '%[AFK]%' LIMIT 1";
0 голосов
/ 13 июня 2010

Вы имеете в виду time() для обозначения текущего времени? И можем ли мы предположить, что timestamp имеет тип datetime? Тогда это должно работать:

SELECT
    count(*)
FROM
    active
WHERE
    timestamp > NOW() - 1800
...