0 / 0 / 1
Регистрация: 08.12.2012
Сообщений: 19
1

Сгенерировать сообщение на почту для активации аккаунта

16.11.2013, 09:33. Показов 1500. Ответов 20
Метки нет (Все метки)

Здравствуйте. Подскажите как это лучше сделать? Т.е. после регистрации на почту приходит письмо с ссылкой, пройдя по которой, аккаунт активируется (подтверждается почта).
Работаю на PHP + PostGreSQL
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2013, 09:33
Ответы с готовыми решениями:

Статус аккаунта в гугле "Приостановлен: для активации необходимо войти в систему через Интернет"
Всем привет! У одного из моих пользователей в google apps free версии внезапно гугл...

Не получается оплатить 25$ при активации аккаунта Google Play
Cтолкнулся с проблемой - не получется оплатить 25$ для активации аккаунта в гугл плэй(( пытаюсь...

При регистрации не приходит письмо активации на почту
Код страницы регистрации Подскажите в чем может быть проблема, вознаграждение гарантирую, заранее...

Реализовать регистрацию аккаунта на примере аккаунта почты
Добрый день уважаемый форумчане! Дошел до такого дела как регистрация аккаунтов программными...

20
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
16.11.2013, 10:29 2
Ты скажи, как хочешь сделать, а мы подскажем, как лучше.
0
0 / 0 / 1
Регистрация: 08.12.2012
Сообщений: 19
16.11.2013, 12:19  [ТС] 3
Когда пользователь регистрируется на сайте его аккаунт ещё не активен. Для активации он должен подтвердить введённую им почту. Для этого на почту отправляется письмо с ссылкой, пройдя по которой его аккаунт активируется и пользователь сможет воспользоваться всеми функциями.
Вопрос: Как генерировать ЭТУ ССЫЛКУ и как её потом хранить - в БД или нет?
0
ищите меня в нирване
36 / 36 / 5
Регистрация: 23.10.2013
Сообщений: 198
16.11.2013, 12:45 4
Цитата Сообщение от Rusl_2401 Посмотреть сообщение
Как генерировать ЭТУ ССЫЛКУ
например так
PHP
1
$link='http://sitename/reg?confirm=md5($user_email)';
Цитата Сообщение от Rusl_2401 Посмотреть сообщение
как её потом хранить - в БД
угу. в отдельной таблице, после подтверждения регистрации запись удалять. Ну и подчищать время от времени незарегистрированные записи
1
0 / 0 / 1
Регистрация: 08.12.2012
Сообщений: 19
16.11.2013, 12:49  [ТС] 5
Действительно!! Про md5 я и забыл)) Спасибо!!
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16829 / 6707 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
17.11.2013, 01:14 6
Цитата Сообщение от your_tremor Посмотреть сообщение
в отдельной таблице
создавать отдельную таблицу только из-за одного кода? Не проще в таблице с пользователями добавить поле activation_code ?
0
ищите меня в нирване
36 / 36 / 5
Регистрация: 23.10.2013
Сообщений: 198
17.11.2013, 14:56 7
Цитата Сообщение от KOPOJI Посмотреть сообщение
таблицу только из-за одного кода
а если это буфер для всей регистрационной информации? чтобы не замусоривать основную таблицу пользователей...
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16829 / 6707 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
17.11.2013, 15:28 8
your_tremor, имхо, создавать отдельную таблицу для кода активации - это лишнее. Потому, что:
1. Лишняя таблица (зачем она нужна?)
2. Лишние запросы при выборке (здравствуй, JOIN)
3. Лишние запросы при добавлении (INSERT INTO `users` .... INSERT INTO `codes` с извлечением id-шника этого пользователя из users)
0
ищите меня в нирване
36 / 36 / 5
Регистрация: 23.10.2013
Сообщений: 198
17.11.2013, 15:53 9
Цитата Сообщение от KOPOJI Посмотреть сообщение
Лишние запросы при выборке (здравствуй, JOIN)
3. Лишние запросы при добавлении (INSERT INTO `users` .... INSERT INTO `codes` с извлечением id-шника этого пользователя из users)
ну откуда лишние запросы? Какие join-ы? Это же один раз! В начале регистрации, далее, после подтверждения, информация переносится в таблицу пользователей и запись стирается. Дополнительная таблица в базе никому не мешает и на производительность не влияет - есть и есть, в запросах не участвует, никому от нее не жарко ни холодно. А вот лишнее поле в таблице пользователей - оно будет использовано только один раз, но останется висеть всю оставшуюся жизнь..
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16829 / 6707 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
17.11.2013, 15:59 10
Цитата Сообщение от your_tremor Посмотреть сообщение
ну откуда лишние запросы?
А вы подумайте, каким образом вы добавите запись при регистрации в две таблицы. С учетом того, что, если все нормально делать, то заносить туда надо id-шник последней добавленной записи из таблицы с пользователями.
Цитата Сообщение от your_tremor Посмотреть сообщение
далее, после подтверждения, информация переносится в таблицу пользователей и запись стирается
Индекс все равно растет Кстати, сколько надо будет запросов сделать к БД для удаления ячейки, связанной с другой таблицей, а затем изменения таблицы с пользователями? И сколько будет запросов к БД, чтобы изменить два поля в одной таблице?
Цитата Сообщение от your_tremor Посмотреть сообщение
А вот лишнее поле в таблице пользователей - оно будет использовано только один раз, но останется висеть всю оставшуюся жизнь..
После подтверждения изменить его значение на NULL и пусть висит. И
Цитата Сообщение от your_tremor Посмотреть сообщение
никому не мешает и на производительность не влияет - есть и есть, в запросах не участвует, никому от нее не жарко ни холодно
0
55 / 53 / 18
Регистрация: 05.08.2013
Сообщений: 327
17.11.2013, 18:29 11
Я обычно делаю так:
в таблице юзеров есть доп поле activated
При регистрации в него генерирую число (можно md5)
После даю линку на емаил
?id=1&active=КОД
Если код совпадает, то обнуляю поле activated
Вот и все.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16829 / 6707 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
17.11.2013, 18:31 12
webphp, я про подобный вариант и говорю..
1
ищите меня в нирване
36 / 36 / 5
Регистрация: 23.10.2013
Сообщений: 198
17.11.2013, 20:03 13
Цитата Сообщение от KOPOJI Посмотреть сообщение
вы подумайте, каким образом вы добавите запись при регистрации в две таблицы
вы не поняли меня.не собираюсь ничего добавлять сразу в две таблицы
Цитата Сообщение от KOPOJI Посмотреть сообщение
Индекс все равно растет
какой индекс и куда он растет? если вы про автоинкрементный первичный ключ - так он растет только с добавлением нового пользователя
Цитата Сообщение от KOPOJI Посмотреть сообщение
Кстати, сколько надо будет запросов сделать к БД для удаления ячейки, связанной с другой таблицей, а затем изменения таблицы с пользователями?
ни с чем ячейка не связана. Если лень написать хранимку - запросов будет в момент подтверждения регистрации будет в общей сложности 3. select, select into, delete.но только один раз за все время жизни пользователя. никаких лишних полей и лишних запросов. если ежесекундно регистрируются тысячи пользователей - я вам не верю.

Добавлено через 2 минуты
удивитесь, но первый запрос - попытка регистрации, второй - подтверждение регистрации. в хранимке 3 запроса. и работает. про какие связанные ячейки вы.. откуда они взялись не понимаю
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16829 / 6707 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
17.11.2013, 20:03 14
Цитата Сообщение от your_tremor Посмотреть сообщение
не собираюсь ничего добавлять сразу в две таблицы
куда вы сохраните код активации? Или вы собираетесь сначала извлечь данные, собрать ключ, а затем сравнивать?
0
ищите меня в нирване
36 / 36 / 5
Регистрация: 23.10.2013
Сообщений: 198
17.11.2013, 20:04 15
удивитесь, но первый запрос - попытка регистрации, второй - подтверждение регистрации. в хранимке 3 запроса. и работает. про какие связанные ячейки вы.. откуда они взялись не понимаю
0
KOPOJI
17.11.2013, 20:05
  #16

Не по теме:

Цитата Сообщение от your_tremor Посмотреть сообщение
удивитесь, но первый запрос
где-то я уже это видел.. :D

0
ищите меня в нирване
36 / 36 / 5
Регистрация: 23.10.2013
Сообщений: 198
17.11.2013, 20:05 17
Цитата Сообщение от KOPOJI Посмотреть сообщение
куда вы сохраните код активации?
в отдельную, ни счем не связанную таблицу предварительной записи пользователей кандидатов на регистрацию
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16829 / 6707 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
17.11.2013, 20:06 18
Цитата Сообщение от your_tremor Посмотреть сообщение
в отдельную, ни счем не связанную таблицу предварительной записи пользователей кандидатов на регистрацию
Отлично. Значит дальше будет запрос INSERT INTO SELECT ? И зачем гонять из пустого в порожнее?
0
ищите меня в нирване
36 / 36 / 5
Регистрация: 23.10.2013
Сообщений: 198
17.11.2013, 20:17 19
Не из пустого в порожнее, а из карантина в нормальные пользователи. За чем базу с нормальными пользователями загаживать? Ну вам виднее
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16829 / 6707 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
17.11.2013, 20:20 20
В общем.
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
mysql> USE `test`;
DATABASE changed
mysql> CREATE TABLE `users` (`user_id` INT(10) AUTO_INCREMENT PRIMARY KEY, `login` VARCHAR(255) UNIQUE, `pass` VARCHAR(50), `activation_code` VARCHAR(40) DEFAULT NULL, `status` TINYINT(1) UNSIGNED DEFAULT '0');
Query OK, 0 ROWS affected (0.12 sec)
 
mysql> INSERT INTO `users` VALUES(NULL, 'test', SHA1('test'), MD5('test'), 0);
Query OK, 1 ROW affected (0.04 sec)
 
mysql> SELECT * FROM `users`;
+---------+-------+------------------------------------------+----------------------------------+--------+
| user_id | login | pass                                     | activation_code                  | STATUS |
+---------+-------+------------------------------------------+----------------------------------+--------+
|       1 | test  | a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 | 098f6bcd4621d373cade4e832627b4f6 |      0 |
+---------+-------+------------------------------------------+----------------------------------+--------+
1 ROW IN SET (0.01 sec)
 
mysql> #пришел код активации - 098f6bcd4621d373cade4e832627b4f6
mysql> UPDATE `users` SET `activation_code` = NULL, `status` = 1 WHERE `activation_code` = '098f6bcd4621d373cade4e832627b4f6';
Query OK, 1 ROW affected (0.05 sec)
ROWS matched: 1  Changed: 1  Warnings: 0
 
mysql> SELECT * FROM `users`;
+---------+-------+------------------------------------------+-----------------+--------+
| user_id | login | pass                                     | activation_code | STATUS |
+---------+-------+------------------------------------------+-----------------+--------+
|       1 | test  | a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 | NULL            |      1 |
+---------+-------+------------------------------------------+-----------------+--------+
1 ROW IN SET (0.00 sec)
 
mysql> #юзер активирован
mysql>
Что вы предлагаете, покажите.

Добавлено через 1 минуту
Цитата Сообщение от your_tremor Посмотреть сообщение
За чем базу с нормальными пользователями загаживать?
Ок. Вот решили вы добавить возможность бана пользователей, к примеру. Или, как часто делают в скриптах форумов, к примеру, возможность "сбросить" активацию пользователя. Ваши действия? Занести пользователя обратно в первую таблицу, а из той удалить? А если страница была уже проиндексирована?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2013, 20:20

Windows 7 сообщение об активации
Windows 7 активирован, в свойствах показывает что ативирован, но иногда вылазиет сообщение что...

После активации Vista Ultimate X64 появляется сообщение
Поставил себе эту ось, и после активации во время загрузки пишется что-то про MS-DOS потом вылетает...

Как убрать сообщение в правом нижнем углу на Win10 о ее активации?

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.