[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вычисление временного интервала
Андрей
Здраствуйте, может кто нибудь помочь, нужна функция на подоби такой: принимаются три аргумента, первые два это даты, а третий временной промежуток, если разница между датами больше временного промежутка, то ф-ия возвращает false, true в противном случае, это нужно для активации зарегистрированого аккаунта, т.е. с мыла приходит письмо с временной меткой и обрабатывается сценарием, если время не истекло, то аккаунт активируется, если истекло то сообщение вроди "Просроченная активация аккаунта!". Наверняка есть какойто готовый механизм для этого, заранее спасибо!)



Спустя 3 часа, 15 минут, 27 секунд (31.12.2008 - 08:35) Guest написал(а):
PHP
<?
if (isset(
$_GET['login']) && isset($_GET['key'])) {
   
$login $_GET['login'];
   
$key $_GET['key'];
   
// Делаем проверку login на нехорошие символы
   
if (!preg_match("/^\w{3,}$/"$login)) {
      die(
'Неправильная ссылка!');
   }
   
$time time();
   
$link mysql_connect('localhost',$dbuser,$dbpass);
   if (!
$link) {
      die(
'Не удалось соединиться с БД');
   }else{
      
mysql_select_db('authorize'$link);
      
$res mysql_query("SELECT id, email, status, timestamp
      FROM users WHERE login='$login' LIMIT 1"
$link);
      
// Есть ли пользователь с таким логином?
      
if (mysql_num_rows($res) != 1) {
         
mysql_close($link);
         die(
'Такого пользователя нет!');
      }
      
$user mysql_fetch_row($res);
      
// Может он уже активен?
      
if ($user[2] == 1) {
         
mysql_close($link);
         die(
'Данный логин уже подтвержден!');
      }
      
// Успел ли юзер активировать логин? (если нет - удаляем из базы)
      
if ($user[3] - $time 5*24*60*60) {
         
mysql_query("DELETE FROM users WHERE login='$login' LIMIT 1"$link);
         
mysql_close($link);
         die(
'Срок активации истёк! Регистрируйтесь заново.');
      }
      
$key1 md5(substr($user[1], ,2).$user[0].substr($login,2));
      
// Поверяем "keystring"
      
if ($key1 != $key) {
         
mysql_close($link);
         die(
'Неправильная контрольная сумма!');
      }
      
// Если все проверки пройдены - активируем логин!
      
mysql_query("UPDATE users SET status = 1 WHERE login='$login'"$link);
      
mysql_close($link);
   }
}

Спустя 2 минуты, 27 секунд (31.12.2008 - 08:38) fartan написал(а):
а как регистрация у тебя реализована ?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.