Перейти к содержимому



Автоматическое удаление неактивированных учетных записей

#1 Kuchuluk

Kuchuluk
  • Пользователь
  • 315 сообщений
  • Репутация: 5
0

Отправлено 26 Май 2013 - 11:12

в таблице users есть поле reg_date, в котором хранится дата регистрации пользователя и поле set_user_status, в котором значение 0 или 1 и по которому определяется активировал пользователь учетную запись по е-мэйлу или нет. Если в течение двух дней он не активирует свою учетную запись, то она удаляется с помощью скрипта delete_notactivated.php с таким кодом
//получаю текущий номер дня в месяце
$t = date("d");
//отнимаю от него 2, чтобы получить номер дня раньше которого нужно удалить неактивированные аккаунты
$day = $t - 2;
if ($day < 10) { $day = "0".$day; }
$year = date("Y");
$month = date("m");
$time = date("H:i:s");
// получаю дату раньше которой нужно удалить неактивированные аккаунты
$new_date = $year."-".$month."-".$day." ".$time;

mysql_query("DELETE FROM users WHERE set_user_status = 0 AND reg_date < '{$new_date}'") or die();
но этот скрипт надо вручную запускать. Как-нибудь можно сделать, чтобы каждые 2 дня они автоматически удалялись, или это всегда вручную делается?

 

 

  • 0

#2 html-ka

html-ka
  • Пользователь
  • 455 сообщений
  • Репутация: 82

Отправлено 26 Май 2013 - 11:24

cron
  • 0

#3 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 26 Май 2013 - 11:34

программа что ли?


  • 0

#4 fedornabilkin

fedornabilkin
  • Пользователь
  • 696 сообщений
  • Репутация: 91

Отправлено 26 Май 2013 - 11:47

Нет, это такой планировщик. создаешь задачу и устанавливаешь интервал обращения к нужному файлу. И сервер сам будет запрашивать указанный файл и соответственно исполнять его код.
По поводу активации аккаунта.
Я бы минимизировал все максимально. Например, можно генерировать пароль юзеру и слать на мыло, а в таблице юзеров писать метку времени.
Т.е. если юзер авторизовался, то обновлять эту метку с каждым обращением к сайту.
Получается, если юзер не заходил на сайт ни разу, то он и мыло не активировал. Поле set_user_status становится лишним.
  • 0
Как часто в горестной разлуке,В моей блуждающей судьбе, ФО, я думал о тебе.


#5 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 26 Май 2013 - 12:23

а как потом удалять этого пользователя? метка времени же ставится все равно, даже если он не переходил по ссылке в мыле

в этой строке надо адрес до файла писать? 80af36f5830806bf1681e64158aed010.jpg


  • 0

#6 fedornabilkin

fedornabilkin
  • Пользователь
  • 696 сообщений
  • Репутация: 91

Отправлено 26 Май 2013 - 13:56

Метка времени ставится только после того, как юзер пройдет авторизацию и загрузит одну из страниц сайта, а до этого в том поле будет ноль.
Там не совсем адрес, надо команду на выполнение написать. Погугли, команды разные в зависимости от панели на сервере.
  • 0
Как часто в горестной разлуке,В моей блуждающей судьбе, ФО, я думал о тебе.


#7 denis79513

denis79513
  • Пользователь
  • 56 сообщений
  • Репутация: 7

Отправлено 29 Май 2013 - 08:20

Kuchuluk, скрипт может дать сбой, а конкретно в формировании даты, если пользователь зарегистрировался 31 числа, а подтвердил аккаунт 1 числа, посчитайте разницу...


  • 0

#8 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 29 Май 2013 - 08:47

зарегистрировался 31 числа, а подтвердил аккаунт 1 числа, посчитайте разницу...

причем тут разница?
зачем его удалять, если он подтвердил регистрацию?
WHERE set_user_status = 0, а если он подтвердил, то set_user_status = 1
  • 0

#9 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 29 Май 2013 - 12:03

denis79513, сравнение же полностью идет, вместе с месяцем


  • 0

#10 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 29 Май 2013 - 12:34

кстати, Kuchuluk, вот это все

//получаю текущий номер дня в месяце
$t = date("d");
//отнимаю от него 2, чтобы получить номер дня раньше которого нужно удалить неактивированные аккаунты
$day = $t - 2;
if ($day < 10) { $day = "0".$day; }
$year = date("Y");
$month = date("m");
$time = date("H:i:s");
// получаю дату раньше которой нужно удалить неактивированные аккаунты
$new_date = $year."-".$month."-".$day." ".$time;

можно заменить на

$current_time = date("Y-m-d H:i:s", time());
$new_date = date('Y-m-d H:i:s', strtotime($current_time.'-2 day'));

  • 1

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru