Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализация активации аккаунта через мыло 
V
    Опции темы
KoLiZeI
Дата 26.12.2007, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.4.2007
Где: г. Саратов

Репутация: нет
Всего: нет



Помогите пожалуйста сделать активацию через мыло: 
1) Что нужно отправлять пользователю на мыло, как я понял отправляется определённая сессID, которая до момента активации хранится в бд для данного пользователя
2) нужна ли она будет потом, что нужно хранить в бд что бы аккаунт был неактивным до момента активации.
как лучше это сделать подскажите!  smile 
PM MAIL WWW ICQ Skype   Вверх
MoLeX
Дата 26.12.2007, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



KoLiZeI я бы сделал так:
1. генерим какоето число которое в дальнейшем подставим в запрос + сохраняем его в бд.
2. после того как юзер щелкнул по ссылке делаем проверку - правильное число или нет.

З.Ы. по правде тут море вариантов все зависит от твоей фантазии...


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
krundetz
Дата 26.12.2007, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Попробуйте сделать вот так.
Заведите параллельно к основной табличке пользователей ещё одну где будут хранится неавторизованные пользователи(хотя можно использовать и одну для) она будет отличаться от основной только полем в котором будет хранится некий уникальный идентификатор, как вариант идентификатор сессии. При регистрации пользователя вы заносите его данные в эту табличку и отправляете ему ссылку например такого вида http://mysite.ru/activation=уникальныйидентификатор. При переходе на неё происходит обрашение к табличке с неактивироваными пользователями проверяется есть ли там такой уникальный иденификатор после чего происходит занесение даных в основную табличку пользователей и уже после этого пользователю выводится предложение авторизоваться на сайте или можно его автоматически авторизовывать.


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
MoLeX
Дата 26.12.2007, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



krundetz а если свопадет уникальный индификатор еще 2 людей, т.е. они тоже авторизируются)
можно немного модернизировать
1. id - номер зареганного юзера
2. activation - сгенерированая строка.

т.е. получим http://site/auth.php?id={номер}&activation={строка}.
когда скрипт получает эти данные то подставляем в запрос 
SELECT * FROM table WHERE id={номер}, получаем значение поля activation и сравниваем его с полученным.


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
krundetz
Дата 26.12.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(MoLeX @ 26.12.2007,  11:55)
т.е. получим http://site/auth.php?id={номер}&activation={строка}.
когда скрипт получает эти данные то подставляем в запрос 
SELECT * FROM table WHERE id={номер}, получаем значение поля activation и сравниваем его с полученным.

Тогда возможно лучше будет запрос такого вида:
SELECT * FROM table WHERE id={номер} AND activation LIKE {строка}

Кстати какой вариант предпочтительнее с одной табличкой для пользователей или с двумя для активированых и неакивировных пользователей.


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
MoLeX
Дата 26.12.2007, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



krundetz  smile 
толко наверное не 
Цитата

SELECT * FROM table WHERE id={номер} AND activation LIKE {строка}


а строка:
Код

$proverka = mysql_query("SELECT * FROM table WHERE id={номер} AND activation={строка}")

if(mysql_num_rows($proverka)!==0)
//действия


????


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
krundetz
Дата 26.12.2007, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



MoLeX
да вы совершенно правы я имел в виду именно такой код. Можно узнать ваше мнение по поводу заданного мной несколькими постами выше вопроса?


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
MoLeX
Дата 26.12.2007, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(krundetz @  26.12.2007,  12:09 Найти цитируемый пост)
Кстати какой вариант предпочтительнее с одной табличкой для пользователей или с двумя для активированых и неакивировных пользователей.

если ты про это, то на мой взгляд: а смысл 2-таблицы? можно просто поле впихнуть дополнительно типо активирован юзер или нет. 
и еще лучше использовать 3-е поле - время регистрации, нам же не надо чтобы человек мог подтвердить регистрацию в течении скажем всего года, пусть это будет 24 часа или другое время.


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
krundetz
Дата 26.12.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата

если ты про это, то на мой взгляд: а смысл 2-таблицы? можно просто поле впихнуть дополнительно типо активирован юзер или нет. 
и еще лучше использовать 3-е поле - время регистрации, нам же не надо чтобы человек мог подтвердить регистрацию в течении скажем всего года, пусть это будет 24 часа или другое время.

тоесть ты предлагаешь сделать поле activation в котором будет хранится либо YES либо уникальный идентификатор, и как только пользователь активируется оно меняет значение. Зачем добавлять ещё и время регистрации если обычно есть дата регистрации просто время нужно отсчитать от него дапустим не 24 часа, а трое суток.

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


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
MoLeX
Дата 26.12.2007, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



krundetz а как срипт сможет отсчитать когда юзер попытался зарегаться?

Добавлено через 5 минут и 8 секунд
Цитата(krundetz @  26.12.2007,  12:56 Найти цитируемый пост)
 Если переодически шерстить таблицу на предмет неактивированых пользователей у которых истек срок активации накладно может выдьте если записей много. 

просто скриптом смотреть и удалять их...


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
KoLiZeI
Дата 26.12.2007, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.4.2007
Где: г. Саратов

Репутация: нет
Всего: нет



Спасибо всем огромное за помощь, воспользовался методом krundetz с дополнительной таблицей для хранения временных аккаунтов!

Добавлено через 3 минуты и 53 секунды
Цитата(MoLeX @  26.12.2007,  12:35 Найти цитируемый пост)
если ты про это, то на мой взгляд: а смысл 2-таблицы? можно просто поле впихнуть дополнительно типо активирован юзер или нет. 
 

Тогда ещё в основной таблице надо хранить уникальный номер и активный/неактивный, плюс в моём случае это задача появилась в процессе работы, когда уже основная работа сделана, и вся выборка идёт по активным аакаунтам, и чтобы делать ещё проверку на активность, займет слишком много времени что бы всё переделывать.
PM MAIL WWW ICQ Skype   Вверх
MoLeX
Дата 26.12.2007, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(KoLiZeI @  26.12.2007,  13:15 Найти цитируемый пост)
дополнительной таблицей для хранения временных аккаунтов!


если проект будет посещаемый и популярным то не следует так делать, ведь тебе прийдется переносить данные из одной таблицы в другую (или я не прав?), что наложит след на скорость работы...



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
KoLiZeI
Дата 26.12.2007, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.4.2007
Где: г. Саратов

Репутация: нет
Всего: нет



Цитата(MoLeX @  26.12.2007,  13:22 Найти цитируемый пост)
если проект будет посещаемый и популярным то не следует так делать, ведь тебе прийдется переносить данные из одной таблицы в другую (или я не прав?), что наложит след на скорость работы...

Да но это будет проходить лишь 1 раз при активации аккаунта
PM MAIL WWW ICQ Skype   Вверх
MoLeX
Дата 26.12.2007, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



это понятно что один раз. ладно насколько помнится MySQL уютно себя чуствует при ОЧЕНЬ большом кол-ве поситителей (точное значение не помню, так что и не буду врать), так что нечего страшного по сути не будет  smile 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
krundetz
Дата 26.12.2007, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата

если проект будет посещаемый и популярным то не следует так делать, ведь тебе прийдется переносить данные из одной таблицы в другую (или я не прав?), что наложит след на скорость работы...

Почему наложит? Мы же в любом случае будем вставлять данные, а при однатобличном варианте у нас потом ещё добавится один запрос на изменнение данных при активации. Тоесть таблица пользователей самая часто используемая почти во всех проектах, особенно форумах, будет испытывать при однотобличном варианте большую нагрузку на один запрос. По определению вторая таблица неактивированых пользователей должна получится меньеше значет и сделать очистку в соответствие с определенным условием будет легче. Вот так я рассуждал, может я ошибаюсь, поэтому прошу высказывать своё мнение.
Цитата

а как срипт сможет отсчитать когда юзер попытался зарегаться?

Очень просто у нас есть поле в котором есть дата регистрации даем на регистрацию 3 суток создаем скрипт который будет чистить таблицу и будем его вызывать кроном в 24 часа раз за сутки. Это мой вариант.
Цитата

это понятно что один раз. ладно насколько помнится MySQL уютно себя чуствует при ОЧЕНЬ большом кол-ве поситителей (точное значение не помню, так что и не буду врать), так что нечего страшного по сути не будет

ну я исхожу из того что у нас не выделеный и даже не виртуальный сервер а самый простой вируальный хостинг


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1878 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.