Potwierdzenie rejestracji przez użytkownika

0

Czesc.
Potrzebuje zrobic rejestracje z wyk MySQL tylko mam dylemat. Nje znam zabardzo baz danyc a zwlaszcza tych calych relacji i nie wiem jak to ugrysc.
Chce zrobic taki myk zeby zanim konto bedzie aktywne status w kolumnie byl 0 a po kliknieciu i weryfikacji zmieni soe na 1. To woem jak zrobic.
To nie bedzie dla kazdego tylko dla wybranych firm wiec ktoras ktoa chce sie zarejestrowac bedzie musiala dostac ode mnie token jskis ciag znakow tylko dla konkretnej firmy kazdy inny. To zapisze w tabeli TOKEN. gdzie bedzie kolumna token, data, id. Podczas weryfikacji rejestracji skrypt sprawdzi czy taki token istnieje ktory poda user i potem nastepuje zapis tymczasowy do tabeli USERS z danymi o statusie 0. Po kliknieciu w link status zmienia sie na 1 i kest aktywny. Oczywoscie jeszcze w tabeli USERS bedzie pole timestamp gdzie zapisze czas÷powiedzmy 5 godzin do przodu i wtedy user ma tyle czasu na aktywacje.
Dobrze mysle czy nie

0

No zasadniczo to działa tak, jak opisałeś. Przy czym Ty się skupiasz na samej bazie, a tutaj (jak zresztą napisałeś) obsługa rejestracji/potwierdzenia, patrząc z poziomu bazy, jest czymś trywialnym. Więcej zamieszania będziesz miał z obsługą samego serwera WWW (tak podejrzewam, bo nie wiem, w jaki sposób inaczej planujesz to zrobić), który będzie obsługiwał aktywacje. Samo kopiowanie klucza z otrzymanej wiadomości i wpisywanie go w specjalne pole w formularzu jest jakąś opcją, ale lepszą (i bardziej profesjonalnie wyglądającą) metodą jest klikalny link. Musisz rozkminić, w jaki sposób w tym linku ukryć dane tokena, który chcesz potwierdzić. Poza tym raczej nie będziesz tego ręcznie wysyłać, więc masz jeszcze do rozkminienia temat automatyzacji wysyłki maili.

0

Po resestracji tymczasowej user dostaje email z linkiem w ktorym jest token i jego email w url. Nie wydaje mi sie ze ootrzebne bedzie solenie tego bo w momencie kiedy user kliknie w link skrypt najpierw sprawdzi status czy jest na 0 i tez token czy sie zgadza. Jesli tak to zmieniam tylko status. Jesli ktos chce drugi raz wyk link to juz noeke zadziala bo status bedzie zmieniony.

1

No dobra...ale w sumie to w czym jest problem, skoro wydaje się, że wszystko wiesz, masz wizję jak to zrobić itp? :P

0

Chodzi mi czy to rozwiazanie ootymalne.
Jeszcze jesli chodzi o solenie bo jakos nigdy nad tym sie nie zastanawialem. Wystarczyloby do takiego tokena zwyczajnie dokleic losowy xiag znakow z przodu i z tylu a potem znajac ich dlugosc wyciac i zostawic to co che
?

0

Co do generowania tokena - ja bym ustalił długość na powiedzmy 30 znaków z ograniczonego zbioru: małe i duże litery, cyfry, kilka wybranych (ale bezpiecznych z punktu widzenia SQL oraz URL) znaków specjalnych. Możesz potem jeszcze dodać na początku/końcu jakąś sumę kontrolną. Raczej będzie to bezpieczne - skoro token ma żyć kilka godzin, szanse że ktoś sobie go odgadnie czy przypadkowo wpisze z palca, będzie bliska zera.

Nie wiem, o co Ci chodzi z "doklejaniem" czegoś do tego tokena. Na pewno nie zamieszczaj w nim żadnych danych, które umożliwią rozpoznanie użytkownika - np. jakiegoś loginu, maila, IP itp. Token ma być totalnie losowy, a jedyny sposób powiązania go z danym kontem to baza, w której masz przypisanie.

Powiedzmy, że rejestruje się ktoś z adresu "marchewa@rolnik.com" - tworzysz sobie w bazie token/klucz w postaci SFD345sdFSDFGweq45sgwDFG i przypisujesz go do tego maila oraz zapisujesz godzinę wygenerowania tokena, a w osobnej kolumnie zapisujesz status - "oczekuje na potwierdzenie". Następnie na ten adres wysyłasz maila z linkiem aktywującym. Link ma postać http://twojastrona.pl/activate.php?token=SFD345sdFSDFGweq45sgwDFG. Po kliknięciu w taki adres, skrpyt przetwarzający aktywację sprawdza, czy taki token widnieje w bazie oraz (jeśli go znajdzie) to czy nie minął zadany czas od jego stworzenia (czyli czy token się nie przeterminował). Jeśli wszystko pójdzie OK, to zmieniasz status danego konta na "potwierdzone".

Musisz pamiętać jeszcze o okresowym przeglądaniu tabeli z tokenami i o kasowaniu tych, których czas życia już minął. I jeszcze jedna rzecz, która mi przychodzi do głowy - jeśli użytkownik zażąda wygenerowania nowego tokena, to musisz wcześniej stworzony skasować/dezaktywować/zastąpić nowym. Nie może być dwóch aktywnych tokenów przypisanych do jednego konta użytkownika.

2

Ja bym szukał pod email verification+jakiś framework ;)

0
cerrato napisał(a):

Nie wiem, o co Ci chodzi z "doklejaniem" czegoś do tego tokena. Na pewno nie zamieszczaj w nim żadnych danych, które umożliwią rozpoznanie użytkownika - np. jakiegoś loginu, maila, IP itp. Token ma być totalnie losowy, a jedyny sposób powiązania go z danym kontem to baza, w której masz przypisanie.

Dziękuje Ci bardzo za wyczerpującą odpowiedz ale ja to już ogarniam.

Doklejenie znaczy dodanie losowego stringa. Na początku i na końcu. Tak tylko się pytam.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.