![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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. -------------------- Life's simple... You make choices and don't look back...
|
|
|
![]()
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
![]() 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. -------------------- :: don't you know, I'm LoCo
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 7.03.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
nie
![]() 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 ![]() 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ąć. ![]() Ten post edytował Makciek 13.07.2009, 17:58:51 |
|
|
![]()
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 ![]() -------------------- :: don't you know, I'm LoCo
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 7.03.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
ok
![]() no i jeszcze jedno głupie pytanie ![]() czy w bazie hasło mam zapisaywać jako varhar, czy password, jeśli password to jak to później odkodować? |
|
|
![]()
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? -------------------- Life's simple... You make choices and don't look back...
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 126 Pomógł: 5 Dołączył: 7.03.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
ok rozumiem
![]() |
|
|
![]()
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) -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
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:
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:
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.... |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 10:46 |