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



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

#1 Kuchuluk
Kuchuluk
  • Неактивные
  • 333 сообщений
  • Репутация: 5
0

Обновлено 02 июня 2013 - 21:30  Отправлено 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
  • Неактивные
  • 333 сообщений
  • Репутация: 5

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

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


  • 0

#4 fedornabilkin
fedornabilkin
  • Модератор
  • 1 191 сообщений
  • Репутация: 206

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

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

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#5 Kuchuluk
Kuchuluk
    Topic Starter
  • Неактивные
  • 333 сообщений
  • Репутация: 5

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

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

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


  • 0

#6 fedornabilkin
fedornabilkin
  • Модератор
  • 1 191 сообщений
  • Репутация: 206

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

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

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#7 denis79513
denis79513
  • Неактивные
  • 56 сообщений
  • Репутация: 7

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

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


  • 0

#8 isvetlichniy
isvetlichniy
  • Неактивные
  • 622 сообщений
  • Репутация: 93

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

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

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

#9 Kuchuluk
Kuchuluk
    Topic Starter
  • Неактивные
  • 333 сообщений
  • Репутация: 5

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

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


  • 0

#10 isvetlichniy
isvetlichniy
  • Неактивные
  • 622 сообщений
  • Репутация: 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

#11 fedornabilkin
fedornabilkin
  • Модератор
  • 1 191 сообщений
  • Репутация: 206

Отправлено 31 мая 2013 - 08:53

Думаю куда проще будет использовать временную метку time()
С количеством секунд в данном случае проще работать.

скрипт может дасть сбой

Скрипт не может дать сбой, потому что он исполняется именно так, как его написал автор
  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#12 denis79513
denis79513
  • Неактивные
  • 56 сообщений
  • Репутация: 7

Отправлено 02 июня 2013 - 10:40

Значит автор скрипта дал сбой)


  • 0

#13 html-ka
html-ka
  • Неактивные
  • 455 сообщений
  • Репутация: 82

Отправлено 02 июня 2013 - 19:39

а не проще все сделать средствами MySQL?
  • 0

#14 Kuchuluk
Kuchuluk
    Topic Starter
  • Неактивные
  • 333 сообщений
  • Репутация: 5

Отправлено 02 июня 2013 - 20:06

в mysql планировщик событий тоже есть?


  • 0

#15 html-ka
html-ka
  • Неактивные
  • 455 сообщений
  • Репутация: 82

Отправлено 02 июня 2013 - 20:22

я имел ввиду не планировщик, а запрос сделать, не такие монстрообразные скрипты делать, как тут предлагают, а все в одном запросе реализовать.
а про планировщик я писал выше, учи синтаксис cron и будет тебе счастье
  • 0

#16 isvetlichniy
isvetlichniy
  • Неактивные
  • 622 сообщений
  • Репутация: 93

Отправлено 02 июня 2013 - 21:11

а не проще все сделать средствами MySQL?


так он так и делает, читай самый первый пост. и все в одном запросе.
mysql_query("DELETE FROM users WHERE set_user_status = 0 AND reg_date < '{$new_date}'") or die();

Kuchuluk, а тебе поможет запуск твоего скрипта через планировщик задач. По функциональности это то же самое, что запуск скрипта через браузер, но только крон выполняется автоматически на стороне сервера.
я так думаю, что у тебя панель управления cPanel. почитай вот как настроить его
http://hostingru.net/faq/r-7.html#74

если нет, то ищи справку от твоего хостера
  • 0

#17 html-ka
html-ka
  • Неактивные
  • 455 сообщений
  • Репутация: 82

Отправлено 02 июня 2013 - 21:23

так он так и делает, читай самый первый пост. и все в одном запросе.

{$new_date}'

и ты считаешь, что это средствами MySQL?
  • 0

#18 isvetlichniy
isvetlichniy
  • Неактивные
  • 622 сообщений
  • Репутация: 93

Отправлено 02 июня 2013 - 21:30

ну не знает человек конструкций типа SUBDATE(CURDATE(), 2), ну сделал как он все то видит. может и не совсем рационально , но ничего плохого.


  • 0

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


Похожие темы
  Название темы Автор Статистика Последнее сообщение

Пользователь месяца
Megoydagi Megoydagi 1-й за Август
Очков активности: 30 4 темы, 8 сообщений, 1 балл репутации
Сайт: bank.net.ru
ТОП самых активных за этот месяц
  • Фотография Vmir
    #1

    Vmir
    Очков активности: 22.5 3 темы, 6 сообщений, 1 балл репутации

  • Фотография BLIK
    #2

    BLIK
    Очков активности: 18 Вне конкурса за определение пользователя месяца

  • Фотография kuztoday
    #3

    kuztoday
    Очков активности: 10.5 1 тема, 4 сообщения, 1 балл репутации

  • Фотография SergiuS85
    #4

    SergiuS85
    Очков активности: 10.5 2 темы, 1 сообщение, 1 балл репутации

  • Фотография kolver
    #5

    kolver
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Фотография mkreine
    #6

    mkreine (analiz-krovi.net)
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Фотография Megoydagi
    #7

    Megoydagi (bank.net.ru)
    Очков активности: 9 Вне конкурса за определение пользователя месяца

  • Фотография fedornabilkin
    #8

    fedornabilkin (plohoneponyal.ru)
    Очков активности: 7.5 1 тема, 2 сообщения, 1 балл репутации

  • Фотография wp01
    #9

    wp01
    Очков активности: 7.5 0 тем, 5 сообщений, 1 балл репутации

  • Фотография Totti
    #10

    Totti
    Очков активности: 7.5 0 тем, 5 сообщений, 1 балл репутации

  • Показать весь ТОП 10

Поддержите форум! =)
Топ 5 участников по репутации

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