ФорумПрограммированиеPHP для идиотов → Отчеты действий пользователя

Отчеты действий пользователя

  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 16 апреля 2008 г. 13:26

    Добрый день.

    Хочу сделать, что то типа отчетов действий ползователя. Т.е. записывать все что делал пользователь, логины, пароли, время входа и т.д.

    Подскажите как правильней это сделать: Записывать в таблицу БД или в какой-нибудь лог файл на сервере.
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 16 апреля 2008 г. 13:33, спустя 7 минут 18 секунд

    На такие вопросы невозможно ответить вне контекста конкретной задачи.
  • ibizn

    Сообщения: 44 Репутация: N Группа: Кто попало

    Spritz 16 апреля 2008 г. 15:14, спустя 1 час 40 минут 40 секунд

    Ну для этого совсем не обязательно обращаться к БД. Просто пусть при авторизации создается фал с уникальным именем (иенем пльзователя и проверкой существования такого же). Потом при конкретном действии пользователя, прога смотрит его имя в переданных данных, смотрит в файл соответственно с его именем и добавлет строку.
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 16 апреля 2008 г. 16:54, спустя 1 час 39 минут 54 секунды

    Для такого лучше всего всё же БД юзать.
    А для чего тебе всё это? Решил установить за кем-то тотальную слежку? :)
    from TRIAL with LOVE
  • XoxMa

    Сообщения: 135 Репутация: N Группа: Кто попало

    Spritz 16 апреля 2008 г. 20:53, спустя 3 часа 59 минут 7 секунд

    Тут всё очень просто. На каждой страничке повесть такой код:

    $wine = "300"; // то есть пользователь онлайн в течении 300 секунд
    $url = $_SERVER['REQUEST_URI'];
    $ip = $_SERVER['REMOTE_ADDR'];

    if (isset($_SESSION['user_id'])) // если сессия пользователя установлена
    {
    $query = "UPDATE `users`
    SET
    `lastvisit`=NOW(),
    `lastip`='{$ip}',
    `lasturl`='{$url}'
    WHERE `id`='{$_SESSION['user_id']}'
    LIMIT 1";
    $sql = mysql_query($query) or die(mysql_error());

    $sql_update = "UPDATE users SET `online`='0' WHERE `time`+$wine < ".time()." OR `lastip`='{$lastip}' LIMIT 1";
    $result_update = mysql_query($sql_update) or die(mysql_error());

    $sql_insert = "UPDATE users SET `online`='1', `time`='".time()."' WHERE `id`='{$_SESSION['user_id']}' LIMIT 1";
    $result_insert = mysql_query($sql_insert) or die(mysql_error());
    }

    time - это unix время.
    если в столбце online=0 - пользователь не онлайн, 1 - онлайн.

    Если у тебя нету регистрации на сайте, то тут просто нужно всё сделать без сессии.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!