1 (изменено: Mikola, 2006-09-03 08:50:42)

Тема: Есть ли решение с таймером

Я новичёк по этому если всё гениально и просто прошу не смеятся.
Опишу полную задачу.Возможно я вообще не в том направление копаю.Делаю Wap сайт .Для страниц с файлами поставил скрипт который просит ввода имени и пароля,пароли хранятся в таблице mysql выглядит так ID user pass .Вопрос как изменить таблицу чтоб при вводе пароля запускался таймер допусти 1 час и по истечению пароль либо удалялся либо вобщем чтоб по нему нельзя было пройти.
Я понимаю что нужно добавить ещё один столбец где хранить время обращения. но какие атрибуты и галочки поставить это для меня ещё проблемма.

2

Re: Есть ли решение с таймером

Mikola
Если честно, не понял при чем здесь phpMyAdmin...
Не знаю.. Я бы на твоем месте использовал куки.

Но если тебе уж так необходимо решить это с помощью MySQL, тогда можно воспользоваться TIMESTAMP с атрибутом NOW. Это календарный тип данных, для текущего времени. Любой добавляемой записи будет автоматически присваиваться текущее время. И потом уже средствами php-скрипта ты прибавишь один час (или другой лимит) и узнаешь истекло отведенное время или нет...

3

Re: Есть ли решение с таймером

Никаких особых атрибутов на необходимый вам столбец заводить не надо. Достаточно int(11) - целочисленное, 11 символов. Дальше необходимо написать обработчик входа с, примерно, следующей логикой: если данный столбец пуст, либо время действия не истекло, то авторизуем пользователя, иначе, отклоняем авторизацию. При такой логике, по прошествии часа, авторизация будет отклонена. Но если необходимо обрывать сессию, то функцию проверки истечения времени необходимо будет встроить перед всеми возможными вызовами, наприер, загрузкой wap страниц.

<?php
$limit = 3600; // Один час.
// Здесь необходима выборка столбца из БД и вложение результата в переменную $time.
$query = "SELECT time FROM table WHERE username='{$name}'";
$time = mysql_query($query);
if ($time == '' || $time + $limit > time()) {
    // Если столбец пуст, то заполняем его с помощью функции time().
    if ($time == '') {
        $time = time();
        // Здесь необходимо вложить содержимое переменной $time в БД.
    }
    // Авторизуем пользователя.
    echo 'Welcome!';
} else {
    // Отклоняем авторизацию.
    echo 'Sorry, time limit!';
}
?>

Работа с куками строится по аналогии.

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

4

Re: Есть ли решение с таймером

Hanut
Я согласен с предложенной схемой, единственное я все-таки настаиваю на том, чтобы хранить календарные данные в специально предназначенном для этого формате.

Что же касается атрибута NOW он позволяет избежать вызывания функции time(), таким образом использование TIMESTAMP вкупе с атрибутом NOW кажется мне наиболее ораганичным. ИМХО, конечно.

5

Re: Есть ли решение с таймером

Всем спасибо буду пробовать.