|
|
|
| Всем привет!
Работаю над скриптом регистрации. Когда пользователь заполняет регистрационную форму, отправляется письмо со ссылкой активации. Время заполнения формы содержится в строке таблицы datetime.
Пытаюсь зделать так, чтобы в случае, если пользователь не использовал ссылку на протяжении суток, она ставала неактивной.
Тоесть сначала достаем дату регистрации, потом узнаем текущую дату, вычитаем, и если остаток будет больше 24 часов, говорим юзеру гуд-бай :)
Пробовал mktime и getdate, но, видно, руки не с того места ростут. Если кто может помочь кусочком рабочего кода, буду очень признателен. | |
|
|
|
|
|
|
|
для: arsen37
(29.08.2009 в 01:28)
| | в бд записываем время time(), когда пользователь регится
потом, когда он проходит по ссылке, проверяем
<?php
$time_now = time();
$time_from_bd = ... // время из бд
$time_limit = $time_from_bd + (3600 * 24) // скобки для читабельности. К времени регистрации прибавляем ровно сутки (24 часа)
if ( $time_now > $time_limit ) {
echo 'гуд бай!';
} else {
// do it!
}
|
| |
|
|
|
|
|
|
|
для: neadekvat
(29.08.2009 в 01:47)
| | Огромное спасибо! | |
|
|
|
|
|
|
|
для: neadekvat
(29.08.2009 в 01:47)
| | Еще одна проблемка. На основе Вашего кода, хочу создать запрос, который бы удалял из БД все просроченные аккаунты. Что не так?
// Достаём все строки из таблицы, где статус аккаунта = неактивный
$select_time = mysql_query("SELECT time FROM `table_name` WHERE status='off'");
if(!$select_time) exit(mysql_error());
// Определяем время регистрации
$row = mysql_fetch_array($select_time);
$time_reg = $row['time'];
// Узнаем текущее время UNIX
$time_now = time();
// К времени регистрации прибавляем ровно сутки
$time_limit = $time_reg + (3600 * 24);
// Определяем переменную, в каких случаях удалять аккаунты
$delete_time >= $time_limit;
// Удаляем все просроченные аккаунты
$old_delete = mysql_query("DELETE FROM `table_name` WHERE time='".$delete."'");
if(!$old_delete) exit(mysql_error());
|
| |
|
|
|
|
|
|
|
для: arsen37
(30.08.2009 в 00:33)
| | Вообще все это можно сделать так:
<?php
$time_now = time();
$delete_old = mysql_query("DELETE FROM `table_name` WHERE `status` = 'off' && `time` + 86400 < {$time_now}"); // 86400 секунд - сутки
if(!$delete_old) echo mysql_error();
|
Надеюсь, пояснять ничего не надо? | |
|
|
|
|
|
|
|
для: neadekvat
(30.08.2009 в 01:11)
| | Не надо :)) Второй раз спасаете от безсонной ночи перед компом. Спасибо! | |
|
|
|
|
|
|
|
для: arsen37
(29.08.2009 в 01:28)
| | можно и так
$delete_old = mysql_query("DELETE FROM `table_name` WHERE `status` = 'off' AND `time` < ( NOW() - INTERVAL 1 DAY)"); // мускул тоже понимает даты
|
| |
|
|
|