Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сравнение дат php или sql при регистрации
 
 автор: arsen37   (29.08.2009 в 01:28)   письмо автору
 
 

Всем привет!
Работаю над скриптом регистрации. Когда пользователь заполняет регистрационную форму, отправляется письмо со ссылкой активации. Время заполнения формы содержится в строке таблицы datetime.
Пытаюсь зделать так, чтобы в случае, если пользователь не использовал ссылку на протяжении суток, она ставала неактивной.
Тоесть сначала достаем дату регистрации, потом узнаем текущую дату, вычитаем, и если остаток будет больше 24 часов, говорим юзеру гуд-бай :)
Пробовал mktime и getdate, но, видно, руки не с того места ростут. Если кто может помочь кусочком рабочего кода, буду очень признателен.

  Ответить  
 
 автор: neadekvat   (29.08.2009 в 01:47)   письмо автору
 
   для: 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!
}

  Ответить  
 
 автор: arsen37   (29.08.2009 в 11:29)   письмо автору
 
   для: neadekvat   (29.08.2009 в 01:47)
 

Огромное спасибо!

  Ответить  
 
 автор: arsen37   (30.08.2009 в 00:33)   письмо автору
 
   для: 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());

  Ответить  
 
 автор: neadekvat   (30.08.2009 в 01:11)   письмо автору
 
   для: 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();

Надеюсь, пояснять ничего не надо?

  Ответить  
 
 автор: arsen37   (30.08.2009 в 01:28)   письмо автору
 
   для: neadekvat   (30.08.2009 в 01:11)
 

Не надо :)) Второй раз спасаете от безсонной ночи перед компом. Спасибо!

  Ответить  
 
 автор: vito   (03.09.2009 в 11:50)   письмо автору
 
   для: arsen37   (29.08.2009 в 01:28)
 

можно и так
$delete_old = mysql_query("DELETE FROM `table_name` WHERE `status` = 'off' AND `time` < ( NOW() - INTERVAL 1 DAY)"); // мускул тоже понимает даты

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования