Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]E-mail potwierdzający rejestrację.
Makciek
post
Post #1





Grupa: Zarejestrowani
Postów: 126
Pomógł: 5
Dołączył: 7.03.2009
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Witam!
Jak można zrobić skrypt, który będzie wysyłał e-mail z linkiem potwierdzającym rejestrację?
W bazie mam pole "aktywacja", jako domyślnie jest ono ustawione na "nie" i jak zrobić, żeby po naciśnięciu na link, ówcześnie wysłanego do klienta e-mailem, zmieniało się na tak?

Właśnie wymyśliłem żeby jako parametr $_GETa w tym linku zawierał tylko id, i skrypt będzie zmieniał wartość "nie" na "tak" w rekordzie o podanym w adresie id, ale czy takie rozwiązanie będzie dobre?

Ten post edytował Makciek 13.07.2009, 17:42:46
Go to the top of the page
+Quote Post
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Do linku dodaj wygenerowany losowo ciąg znaków i ten sam ciąg zapisz do bazy danych w odpowiednim rekordzie.
Po kliknięciu przez usera na link aktywacyjny porównaj ciąg przesłany GET-em z zapisanymi w bazie i w rekordzie, w którym będzie się zgadzał, zrób update "nie" na "tak". Równocześnie zerujesz wartość pola z losowym ciągiem (potem możesz go używać np. do przypominania zapomnianego hasła, generując nowy ciąg).

Przesyłanie samego ID jest lekko mało bezpieczne. Zakładając, że zalogowany user jest w Twojej aplikacji identyfikowany właśnie przez ID, może to doprowadzić do sytuacji podszywania się poprzez manipulację tym parametrem. Z jednorazowymi kodami, generowanymi losowo i nie powiązanymi bezpośrednio z ID usera, nie ma tego problemu.
Go to the top of the page
+Quote Post
kanji
post
Post #3





Grupa: Zarejestrowani
Postów: 124
Pomógł: 1
Dołączył: 27.06.2005
Skąd: Opole

Ostrzeżenie: (0%)
-----


możesz id albo coś innego (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) np. ktoś się zarejestrował u Ciebie, wysyłasz do niego e-mail czy napewno dokonał rejestracji wysyłasz do niego linka np. strona.pl/aktywuj.php?uzytkowni=nazwa
z tylko z tym ze przed wysylką np. zrób sobie szyfrowanie w bazie np
przy insercie do bazy uzytkowanika jakas nazwe szyfrujesz MD5(nazwa) po czym jak koles kliknie na linka sprawdzasz wartosci uzytkowni(ale pamietaj ze ma to byc tez przez szyfrowanie, albo deszyfrowanie) jesli wartosci te beda sie zgadzac to w bazie atywny zmieniasz na tak.
Go to the top of the page
+Quote Post
Makciek
post
Post #4





Grupa: Zarejestrowani
Postów: 126
Pomógł: 5
Dołączył: 7.03.2009
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


nie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
user po zalogowaniu w sesji ma wpisaną grupę dostępu(w sesji, po wylogowaniu wszystkie dane o sesji są niszczone przez sesion destroit), więc nie ma jak się pod kogoś podszyć jeśli zna się jego id.

No i jeszcze jedno pytanie, jak to zrobić: wygenerować losowo (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) , jakoś w kursie z którego się uczyłem PHP, nie było ani słówka o tym :/

i bezpieczeństwo będę poprawiał jak już całą stronę zrobię, wiem wiem może wydawać się to dość głupie, ale to mój pierwszy skrypt strony, więc chce poznacz wszystko po kolei, a poza tym jeśli się człowiek raz sparzy(dodatkowa robota) to później już będzie próbował tego uniknąć. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i dowie się co zrobił żle

Ten post edytował Makciek 13.07.2009, 17:58:51
Go to the top of the page
+Quote Post
kanji
post
Post #5





Grupa: Zarejestrowani
Postów: 124
Pomógł: 1
Dołączył: 27.06.2005
Skąd: Opole

Ostrzeżenie: (0%)
-----


może to byc ciąg znaków albo poprostu jakis cyfr np
$ciag=rand(10000000,999999999) będziesz miec 9 cyfrowa liczbe daj jeszcze MD5 i będziesz miec dużo znaczków (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Makciek
post
Post #6





Grupa: Zarejestrowani
Postów: 126
Pomógł: 5
Dołączył: 7.03.2009
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


ok (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

no i jeszcze jedno głupie pytanie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
czy w bazie hasło mam zapisaywać jako varhar, czy password, jeśli password to jak to później odkodować?
Go to the top of the page
+Quote Post
blooregard
post
Post #7


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat
czy w bazie hasło mam zapisaywać jako varhar, czy password, jeśli password to jak to później odkodować?

Zapisujesz jako hash, najlepiej taki łączony, czyli np. SHA1(MD5('hasło'));

NIGDY nie zapisujesz hasła jawnym tekstem.
NIGDY nie odkodowujesz hasła.

Proces uwierzytelniania polega na porównaniu, czy ciąg uzyskany po wykonaniu hashowania na podanym przez usera haśle jest równy temu, który jest zapisany w bazie. A będzie rółny tylko wtedy, gdy to hasło będzie tym prawidłowym, bo:

1: Uzytkownik rejestrując się podaje #haslo

2: #hash = sha1(md5(#haslo)) , następnie #hash zapisujesz do bazy danych (pole VARCHAR(40) dla SHA1 )

3: Logowanie (user podaje #login)
#login == #haslo wtedy i tylko wtedy, gdy sha1(md5(#login)) = #hash (ten w bazie)

Kumasz?
Go to the top of the page
+Quote Post
Makciek
post
Post #8





Grupa: Zarejestrowani
Postów: 126
Pomógł: 5
Dołączył: 7.03.2009
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


ok rozumiem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) , ale login też mam kodować? dobrze zrozumiałem ?
Go to the top of the page
+Quote Post
Fifi209
post
Post #9





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Login nie, tylko hasło.

Chciałbym dodać, że zamiast głupiego 'tak' i 'nie' daj tam bool (true or false)
Go to the top of the page
+Quote Post
Abaddor
post
Post #10





Grupa: Zarejestrowani
Postów: 65
Pomógł: 9
Dołączył: 30.06.2009

Ostrzeżenie: (0%)
-----


Zauważyłem że wszędzie robią tak:

Ktoś robi konto, zapisujesz mu w tabeli wygenerowany klucz aktywacyjny. Klucz ten wszyscy robią tak:
  1. <?php
  2. $losowa = str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  3. ?>


Następnie wysyłasz komuś linka z metodą GET np. www.domena.pl/rejestracja.php?info=aktywacja&key=$losowa
On klikając na link wchodzi na stronę, sprawdzasz czy $_GET['info'] == 'aktywacja'; jeśli tak to przypisujesz $key = $_GET['key']; i stosujesz zapytanie:


  1. UPDATE uzytkownicy SET aktywacja = 'tak' WHERE klucz='$key'



Tak tez ja zrobię na stronie którą tworzę.
Choć mam jedno ale.

Co jeśli str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890"); wygeneruje mi 2 takie same kody, i jeden użytkownik całkiem przypadkowo akceptuje konto swoje i innego? Niby przypadek jeden na milion, ale jednak....
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 12:02