Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql]aktywacja email
Forum PHP.pl > Forum > Przedszkole
icetab
Witam mam problem otoz mam strone z formularzem imie nazwisko email i chce zrobic tak gdy ktos wypisze dane wszystkie wyłącznie z email to wysle na podany email list aktywacyjny z linkiem do aktywacji i jak ktos kliknie to na stronie głównej pokaże sie na liście dodanych użytkowników jak to zrobic ? dziękuje za pomoc

skrypt jest oparty na php i mysql
tiraeth
1. Dodatkowa kolumna w bazie danych user_active z wartosciami 1 lub 0.
2. Wysłanie maila z linkiem gdzie w ?active będzie podany hash md5 z haslem
3. Na stronie, po kliknięciu linka, sprawdzasz czy hash z ?active = hash(user_password_z_bazy) - jesli tak, to zmieniasz user_active na 1, jesli nie, to nic nie robisz, przekierowujesz na index.
4. Na stronie wyswietlasz userow, ktorzy maja user_active=1 malejaco wedlug daty.
icetab
czy ktos by mi pomogl zaczac pisac ten skrypt ?
kris2
to naprawde jest trywialne. znajdziesz takie gotowe skrypty na sieci. niby jak ktos mialby Tobie w tym pomoc?
strife
Cytat(icetab @ 17.09.2007, 21:29:20 ) *
czy ktos by mi pomogl zaczac pisac ten skrypt ?

Chyba sobie żartujesz, ~tiraeth podał Ci wszystko co jest potrzebne do stworzenia czegoś takiego, powinieneś mu ładnie i grzecznie podziękować i zacząć to pisać. Nikt za Ciebie tego nie zrobi (przynajmniej nie za darmo), i jak już chcesz coś, to powinieneś chociaż wykazać odrobinę dobrych chęci !

Pozdrawiam.

PS. Przypominam, że lenistwo na tym forum nie jest mile widziane, więc następną wypowiedź przemyśl.
nitro18
Przecież to proste jak drut.

do wysłania maili użyj phpmailer


a resztę kolega Ci powiedział.
Piotrwusek
Cytat(tiraeth @ 17.09.2007, 16:18:14 ) *
3. Na stronie, po kliknięciu linka, sprawdzasz czy hash z ?active = hash(user_password_z_bazy) - jesli tak, to zmieniasz user_active na 1, jesli nie, to nic nie robisz, przekierowujesz na index.



Co wtedy gdy dwóch użytkowników ma takie same hasła?
sniezny_wilk
Cytat(Piotrwusek @ 26.12.2007, 22:04:58 ) *
Co wtedy gdy dwóch użytkowników ma takie same hasła?


Dokładnie. Ja zalecam robić hash z => md5(time()); niezawodne, unikalne i skuteczne smile.gif lub ewentualnie dla większego bezpieczeństwa do time dorzucić jeszcze login usera, lub losować jakąś liczbę.
potreb
Cytat(tiraeth @ 17.09.2007, 16:18:14 ) *
3. Na stronie, po kliknięciu linka, sprawdzasz czy hash z ?active = hash(user_password_z_bazy) - jesli tak, to zmieniasz user_active na 1, jesli nie, to nic nie robisz, przekierowujesz na index.


Wg mnie wystarczy zwykły link aktywacyjny bez żadnych dodatków.
Np activation?userid=11

A w polu user_active z 0 zmieniło by się na 1 i koniec ceregieli.
Piotrwusek
Ale twoim sposobem jest mało bezpieczne.
Ponieważ każdy by mógł bez większego problemu pozmieniać innym użytkownikom

Moja propozycja


active.php?Login=login_usera&Active=haslo_usera_zahaslowane_md5
dadexix
Kod
active.php?Login=login_usera&Active=haslo_usera_zahaslowane_md5
jak by to przerobić jeszcze bardziej:
active.php?Login=mail+login_zakodowany_sha1&Active=haslo_usera_zahaslowane_md5
potreb
Cytat(Piotrwusek @ 26.12.2007, 23:33:55 ) *
Ale twoim sposobem jest mało bezpieczne.
Ponieważ każdy by mógł bez większego problemu pozmieniać innym użytkownikom

Moja propozycja
active.php?Login=login_usera&Active=haslo_usera_zahaslowane_md5


No mógłby pozmieniać tzn zaktywować tylko konto i nic więcej,.

Ale jak ktoś chce zabezpieczyć to to wystarczy wysłac link np z datą rejestracji i po kłopocie
phpion
Cytat(potreb @ 27.12.2007, 12:22:40 ) *
No mógłby pozmieniać tzn zaktywować tylko konto i nic więcej,.

No tak, tylko w tym momencie bezsensowna staje się aktywacja przez e-mail. Wchodzę, rejestruję nowe konto, podaję fikcyjny adres po czym sam sobie aktywuję konto ręcznie.

Cytat(potreb @ 27.12.2007, 12:22:40 ) *
Ale jak ktoś chce zabezpieczyć to to wystarczy wysłac link np z datą rejestracji i po kłopocie

Również jest to proste do obejścia. Patrzysz o której godzinie się rejestrujesz po czym próbujesz ręcznie zmienić (różnice czasowe między serwerem a kompem usera nie powinny być duże).

Ja stosuję coś takiego jak ~sniezny_wilk tj. klucz aktywacyjny to md5(time().uniqid()) i pozamiatane, po czym link aktywacyjny wyglada tak strona.pl/aktywuj.php?user_id=X&kod_aktywacyjny=Y
smile.gif
potreb
Cytat(phpion.com @ 27.12.2007, 10:28:36 ) *
No tak, tylko w tym momencie bezsensowna staje się aktywacja przez e-mail. Wchodzę, rejestruję nowe konto, podaję fikcyjny adres po czym sam sobie aktywuję konto ręcznie.

Ja stosuję coś takiego jak ~sniezny_wilk tj. klucz aktywacyjny to md5(time().uniqid()) i pozamiatane, po czym link aktywacyjny wyglada tak strona.pl/aktywuj.php?user_id=X&kod_aktywacyjny=Y
smile.gif


Nie wiem czy dobrzę rozumię, ale po co mam sobie sam podglądać o której godzinie się rejestruje?? Chyba jeszcze nikt nie wpadł na to żeby zhackować swoje konto? A jak data ma zapisaną nie tylko godzinę, ale i minuty i sekundy to też mam trzymać zegarek w reku i patrzeć się o której zostało konto założone?

Jak dla mnie wszystko to ściema, link aktywacyjny to tylko tak naprawdę potwierdzenie swojego emaila oraz ochrona przed spam botami. That's all
phpion
Cytat(potreb @ 27.12.2007, 18:53:42 ) *
po co mam sobie sam podglądać o której godzinie się rejestruje

Po to aby móc podać fałszywy adres mailowy i aktywować swoje konto z pominięciem faktycznego potwierdzenia przez e-mail.
potreb
Wychodzę z założenia że nikomu by się nie chciało bawić w takie duperele.
phpion
Cytat(potreb @ 28.12.2007, 12:50:25 ) *
Wychodzę z założenia że nikomu by się nie chciało bawić w takie duperele.

W takim razie po co bawisz się w aktywację przez e-mail? Wydaje mi się, że robienie jakiegoś pseudo zabezpieczenia tylko po to żeby utrudniło życie użytkownikowi mija się kompletnie z celem. Jeśli już robi się aktywację to tak aby była trudna do złamania. Dopasowanie 32 znakowego hasła jest zdecydowanie bardziej pracochłonne (brute force?) niż wpisanie samego id (to już totalna porażka) czy id + daty rejestracji.

PS: Jakie masz podejście do bezpieczeństwa formularzy? Wychodzisz "z założenia że nikomu by się nie chciało bawić w takie duperele" jak próby włamania?
drzalek
Cytat(potreb @ 28.12.2007, 11:50:25 ) *
Wychodzę z założenia że nikomu by się nie chciało bawić w takie duperele.


Wszystko zależy od tego jaki charakter ma strona. Jeśli ktoś widzi w formularzu oświadczenie o akceptacji otrzymywania informacji handlowych, to już jest wystarczający powód, żeby bawić się w takie "duperele". Ja bym bardzo chętnie skorzystał z takiej możliwość, żeby mieć konto w serwisie i nie otrzymywać emaili reklamowych. Poza tym jako admin możesz mieć czasami potrzebę informowania o czymś użtkowników, a jak to zrobisz jak maile będą fikcyjne??
nitro18
PS. Oprócz PHPMailera odkryłem też klasę XPM4. Przynajmniej wysyła na gmaila.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.