Zakladanie konta + aktywacja |
Zakladanie konta + aktywacja |
4.04.2004, 15:01:01
Post
#1
|
|
Grupa: Postów: 0 Pomógł: Dołączył: -- Ostrzeżenie: (0%) |
Witam.
W jaki sposob najefektywniej mozna napisac skrypt zakladajacy konta plus aktywacja przez email. Mam juz napisany skrypt logujacy, lecz mam problemy z zakladaniem kont. Nie wiem jakich funkcji uzyc, aby proces ten byl bezpieczny, bylbym wdzieczny za ich wymienienie (w manualu sam poszukam ich funkcjonowania). Poza tym mam ksiazke php 4 Od Podstaw i tam jest taki przykladowy kod (choc stary i juz troche nieuzyteczny) ale nie moge go zmodykowac do wlasnych potrzeb, po prostu go nie rozumiem ;/ Widze tam wiele funkcji np create_acount ale nie wiem czy ich stosowanie jest konieczne i praktyczne (bo przeciez swiat idzie naprzod i od czasu wydania ksiazki moglo sie wiele zmienic). Jesli chodzi o moj php to znam podstawy, na mysql tez troche sie znam. Napisalem juz ksiege gosci, wczesniej wspominiane logowanie i teraz zabieram sie wlasnie za zakladanie kont. Tak jak mowilem wczesniej - bede wdzieczny za jakies ciekawe rozwiazania, funkcje badz nawet przykladowe kody. PS: Przeszukalem forum ale niestety nie znalazlem tak zinterpretowanego topicu i odpowiedzi jak moj. Pozdrawiam. |
|
|
4.04.2004, 17:13:05
Post
#2
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 17.05.2003 Skąd: Nysa Ostrzeżenie: (10%) |
user wypełnia forma, sprawdzasz czy wszsytko jest wporzadkum.in czy nie ma juz takiego usera, czy podal wsystkie dane jakich oczekujesz itd. Jak tak, to zapisujesz te dane do tabeli na bazienp. konta_oczekujace (procz tego w tej tabeli masz klucz - do jego wygenerowania mozesz uzyc np. md5($nick$pass) ), a do user idzie mail z kluczem. Jak suer kliknie na linka, to odpala sie skrypt, ktoy szuka w konta_oczekujace wpisu z takim kluczem i jak jest to kopiuje dane z tej tabeli do tabeli uzytkownicy, a nastepnie usuwa wpis z konta_oczekujace. Tak poza tym od czasu do czasu trzeba czyscic tabele: czyli np. dodatkowo w konta_oczekujace masz czas waznosci np. 48 h. skrypt rejestrujacy zawse jak ktos go "odpali" sprawdza ta tabele i usuwa nieaktualne juz wpisy. No to tyle w skrocie.
-------------------- "Nie wiedziałem tylko, że Bóg też był na grzybach, gdy majstrował przy wszechświecie" (Janusz Wisniewski) dev: gazeta.ie |
|
|
4.04.2004, 17:14:39
Post
#3
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 19.02.2004 Skąd: Piaseczno Ostrzeżenie: (0%) |
moze Ci pomoze jak napisze Ci jak ja mam to zorganizowane:)
1) uzytkownik wypelnie formularz do zalozenia nowego konta (nick + mail) 2) generuje dla niego haslo tymczasowe. Robie to korzystajac z funckji: [php:1:741d82f634]<?php function CreatePassword() { $integer=rand(); $md5 = md5 ((string) ($integer)); $pass=substr($md5,6,8); return $pass; } ?>[/php:1:741d82f634] 3) nastepenie umieszcam to haslo w bazie i wysylam do uzytkownika mail, w ktoyrm jest link prowadzacy do strony,na ktorej zmienia on sobie haslo na swoje i uzupelnia reszte informacji w profilu. Link jest w formie: [xml:1:741d82f634]http://costam.pl/pierwsze_logowanie.php?user=nazwa_uzytkownika&pass=jego_haslo[/xml:1:741d82f634] UPDATE: w momencie wyslania maila wpisujesz usera do bazy z wartoscia pola active na 0. Jesli taki wpis istnieje w bazie dluzej niz x czasu to go poprostu wywalasz. |
|
|
4.04.2004, 17:44:03
Post
#4
|
|
Grupa: Postów: 0 Pomógł: Dołączył: -- Ostrzeżenie: (0%) |
Dzieki, bardzo pomogly mi wasze komentarze. Mimo wszystko nadal nie wiem jakich funkcji użyć do zapisania danych użytkownika do bazy danych (aktywacja to oddzielna dzialka). Potrafie sprawdzac poprawnosc pol i z tym nie powinno byc problemow, mam raczej na mysli jak zapisac BEZPIECZNIE do bazy informacje z formularza. Odwolam sie tu np do ksiegi gosci. Wowczas w niej po sprawdzeniu informacji wpisu zapisywalem dane w tradycyjny sposob (nick, data, ip, email, tresc). Nie mialem z tym wowczas problemow. Nie wiem tylko czy w rejestracji ten sposob bedzie takze efektywny i bezpieczny... kiedy przejrzalem kod w ksiazce "php 4 Od Podstaw" to zauwazylem w nim wiele nowych funkcji, wyraznie dane zostaly zapisywane w inny sposob.
Funkcje uzyte w tym skrypcie to: register_form in_use create_account W ksiedze gosci np tych funkcji nie musialem uzywac... |
|
|
4.04.2004, 17:47:37
Post
#5
|
|
Grupa: Postów: 0 Pomógł: Dołączył: -- Ostrzeżenie: (0%) |
Aha... Spodobal mi sie ten pomysl halfika odnosnie aktywacji kont (oddzielna baza konta_oczekujace). Czy to efektywny sposob czy ktos ma lepszy pomysl...?
|
|
|
4.04.2004, 19:18:49
Post
#6
|
|
Grupa: Zarejestrowani Postów: 436 Pomógł: 6 Dołączył: 8.11.2003 Skąd: Szczecin Ostrzeżenie: (0%) |
Ja mam troche inaczej zrobione. Wykorzystuje tu mySQL. Mam jedną tabele. Są w niej pola które identyfikują usera czyli: nick, email itd co wpisał przy rejstarcji i jest pole "active", domyslnie jest ustawione na 0 wtedy user jest nieaktywany, jest tez pole uid, gdzie zapisuje sie unikalny identyfikator usera, przy rejstaracji wysyałam meila z tym uid i odpowiedni skrypt aktywuje konto, zmienia w tabeli wartość pola "active" na 1 i wtedy user jest aktywny. A co do tego ktore jest efektywniejsze to ci nie powiem, bo to chyba zalezy od osoby ktora pisze skrypt, jego uiejętnosc i jak on to sobie zaplanował
|
|
|
4.04.2004, 19:31:20
Post
#7
|
|
Grupa: Postów: 0 Pomógł: Dołączył: -- Ostrzeżenie: (0%) |
A podczas logowania jak wyszukujesz login i haslo uzytkownika to sprawdzasz takze czy ma aktywne konto?
|
|
|
4.04.2004, 19:35:27
Post
#8
|
|
Grupa: Zarejestrowani Postów: 436 Pomógł: 6 Dołączył: 8.11.2003 Skąd: Szczecin Ostrzeżenie: (0%) |
To tak. Podczas logowania sprawdzam czy login i hasło zgadza sie i czy pole active jest na 1 jezeli nie to wiadomo ze sie nie zaloguje. PS. Jutro ci opisze dokłanie co i jak, bo dzis juz mi sie nie chce
|
|
|
4.04.2004, 19:51:36
Post
#9
|
|
Grupa: Postów: 0 Pomógł: Dołączył: -- Ostrzeżenie: (0%) |
Okej, będe cierpliwie czekał
|
|
|
5.04.2004, 13:14:39
Post
#10
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 0 Dołączył: 25.02.2004 Skąd: Warszawa Ostrzeżenie: (0%) |
W tworzeni takiego systemu najlepiej sie oprzeć o sesje i/lub ciasteczka! Rejestrowanie nowego użytkownika polega na utworzeni bazy danych gdzie będą przechowywane dane takie jak e-mail, loging, hasło, a dla kont z aktywacją dodatkowe pole gdzie występuje albo 0 gdy konto nie aktywne albo 1 gdy konto aktywne sam coś takiego mam na swojej stronce! Baza danych to może być SQL, MySQL oraz pliki binarne (*.txt) Kiedyś logowanie było dla mnie czarną magią a teraz jak zrozumaiłem zasadę działania!
poczytaj sobie w manualu o sesjach! -------------------- ...::: R @ F I & S @ L I :::...
PrivateServ |
|
|
5.04.2004, 13:20:48
Post
#11
|
|
Grupa: Zarejestrowani Postów: 367 Pomógł: 2 Dołączył: 4.03.2003 Skąd: C:/Windows/Temp Ostrzeżenie: (0%) |
Cytat Baza danych to może być SQL
hmm a co to za baza?? -------------------- |
|
|
5.04.2004, 13:25:51
Post
#12
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 0 Dołączył: 25.02.2004 Skąd: Warszawa Ostrzeżenie: (0%) |
Baza to tam stacjonuje wojsko!!
Chodzi mi że tworzysz jak u mnie na stronie plik o odpowiedniej nazwie (zazwyczaj nazwa użytkownika) do której są zapisywane odpowiednie dane potrzebne Ci do identyfikacji danego usera!! Jak nie rozumiesz to nie mój problem!!! -------------------- ...::: R @ F I & S @ L I :::...
PrivateServ |
|
|
5.04.2004, 13:28:57
Post
#13
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 28.09.2003 Skąd: Kraków Ostrzeżenie: (0%) |
wydaje mi sie rafcio, ze to głupie rozweiązanie. jesli juz bawisz sie na plikach, to lepiej wszystko wrzucić do jednego i tylko pola jakos porozdzielać i bedzie to czytelniejsze.
wydaje mi sie ze prościej jest edytować jeden plik niz kilkanascie -------------------- warsztat: w2k3 | apache 1.3.9 | php 4.3.5 | mysql 4.0.15 | mercur mail sever 4.1 | editpad lub notatnik
|
|
|
5.04.2004, 13:40:55
Post
#14
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 0 Dołączył: 25.02.2004 Skąd: Warszawa Ostrzeżenie: (0%) |
Mam jedno pytanie a jak ktoś zdobędzie twoj plik z danymi to co będzie znał hasła wiem że kto by chciał zdobywać w takim serwisie kody ale od czegośhakerzy zaczynają a ja chcem żeby moi użytkownicy mieli 80% pewności że nik nie będzie ruszał ich kont a w przyszłości chcem dojść do 99% pewności!! Ale błędem jest nazywać 100% pewność że się nikt tego nie rozgryzie bo dla w prawionych każda blokada jest do złamania to tylko kwestja czasu!!! U mnie jest dosyć proste ale na tyle utrudnione logowanie jak to możliwe!! Masz rację jest to kłopot bo trzeba coś tworzyć aby pokazywać ilu jest zarejestrownych użytkowników i u mnie jest to w opracowaniu!! Nie mówię że nie masz racji!! a tam napisałem zazwyczaj czyli nie koniecznie!! Zabezpieczenia jak to można nazwać to:
>Nie umieszczać pliku z logowaniem w folderach typu >>Loging >>User, Users >>Log >Pliki, które mają przechowywać nie powinny być zozszeżeniem *.txt Najlepiej swoje rozszeżenie wymyśleć itp. itd. -------------------- ...::: R @ F I & S @ L I :::...
PrivateServ |
|
|
5.04.2004, 13:44:02
Post
#15
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 28.09.2003 Skąd: Kraków Ostrzeżenie: (0%) |
było juz pisane ze pliku z hasłami nie da sie zabezpieczyc, ale mozna skorzystać z htaccess, albo dać rozszerzenie.php i wsatwić wszystko jako komenatrze. wtedy tylko trzeba bedzie pozbyc się zanczków komentarzy i wszystko bedzie w pożądku. co innego jesli ktoś złamie twoje hasło ftp, ale wtedy to co innego bo tak czy siak bedzie mógł sobie skopiowac wszystko
-------------------- warsztat: w2k3 | apache 1.3.9 | php 4.3.5 | mysql 4.0.15 | mercur mail sever 4.1 | editpad lub notatnik
|
|
|
5.04.2004, 16:11:44
Post
#16
|
|
Grupa: Postów: 0 Pomógł: Dołączył: -- Ostrzeżenie: (0%) |
Dzieki za rady, aczkolwiek logowanie na sesjach (plus ciachu) mam juz napisane. Jest oparte o mysql z recznie dodawanymi userami w phpmyadmin, dlategotez teraz probuje napisac jakis dobry skrypt rejestrujacy z aktywacja kont. Jesli chodzi o bezpieczenstwo mojego skryptu, to ocenie je na b.dobre, a nie na celujace z tej samej przyczyny, ktora podal rafcio. Czekam na opis Liko, a poki co ide pisac rozprawke.
|
|
|
5.04.2004, 17:20:47
Post
#17
|
|
Grupa: Zarejestrowani Postów: 436 Pomógł: 6 Dołączył: 8.11.2003 Skąd: Szczecin Ostrzeżenie: (0%) |
1. User wchodzi do mnie na stronę i rejstruje się. Podaje dane w formularzu takie jak: nick, hasło, e-mail, data urodzenia, wiek, opcjonalnie Imię i Nazwisko. Klika zarejstruj.
2. W tym momęcie dane zostają dodane do bazy danych w moim wypadku jest to baza mySQL. Mam tabele o nazwie users z polami: nick, hasło, e-mail, data_urodzenia, wiek, imię, nazwisko, uid, register_time, active, last_login. W polu nick znajduje się nick podany w formularzu, w polu hasło znajduje się hasło, które zostało zahaszowane przez algorytm MD5() w przypadku mySQL posiada on funkcje password, która jest odpowiednikiem funckji MD5 w php. W polach e-mail, data_urodzenia, wiek, imię, nazwisko są warstości w niezminionej postaci, które zostały wypełnione w formularzu. Pole uid jest polem unikalnym dzięki któremu identyfikuje usera. Powstaje ono przy zapisie do bazy danych z funkcji: time(), sha1(), md5() i uniqid() co powoduje, że powtorzenie się ciągu znaków jest praktycznie niemożliwe. Pole active jest po to, żeby sprawdzic czy user jest aktywny czy nie. W polu last_login zapisywana jest data ostatniego zalogowania. 3. W tym samym czasię co dodanie danych do bazy nastepuje wysłanie e-mail'a z kluczem aktywującym. Tym kluczem jest ciąg znaków z pola uid. Po wejsciu na odpowiednią stronę, skrypt aktalizuje pole active zmieniając jego wartość na 1 (czyli user jest teraz aktywny). 4. Logowanie odbywa się na zasadzie podania odpowiedniego loginu i hasła. Jeżeli nie mamy hasła bo zapomnieliśmy, wykorzystujemy funkcje do przypomnienia go. W polu do tego przeznaczonym wpisujemy (wklejamy) unikalny identyfikator, który otrzymalismy e-mailem aktywującym konto. Jeżeli go też nie mamy, to klikam w odpowiedni link, który przeniesie mnie do przypominacza hasła konwencjonalnego gdzie wpisujemy login i date urodzenia. Wtedy admin otrzymuje komunikat w panelu admia, że nastepujący użytkownik zapomniał hasła. Konto zostaje dezaktywowane. W czasie do dwóch dni admin upewnia się to ta osoba i konto zostaje usunięte. Wtedy user może założyc se nowe. W logowaniu opieram się na sesjach wbudowanych w php, choć zamierzam napisać własną klasę obsługującą sesje, lecz zastanawiam się jak to ma wyglądać. W sesji jest zapisywany "uid", dzięki któremu identyfikuje usera na wszystkich podstronach. Nakreśliłem ci zarys tego co ja zrobiłem, lecz nie podawałem kodu, żebyś sam doszedł do tego i rozumiał każdą rzecz. Jeśli są jakieś pytania do tego to pisz, spróbuje odpowiedzieć. |
|
|
7.04.2004, 13:40:30
Post
#18
|
|
Grupa: Postów: 0 Pomógł: Dołączył: -- Ostrzeżenie: (0%) |
Okej dzieki, a jak powinna wygladac struktura pola active?
|
|
|
7.04.2004, 16:12:36
Post
#19
|
|
Grupa: Zarejestrowani Postów: 436 Pomógł: 6 Dołączył: 8.11.2003 Skąd: Szczecin Ostrzeżenie: (0%) |
Nie bardzo rozumiem
|
|
|
7.04.2004, 18:19:57
Post
#20
|
|
Grupa: Postów: 0 Pomógł: Dołączył: -- Ostrzeżenie: (0%) |
Struktura w MySQL pola Active. Czy ma być to może pole typu VARCHAR, MEDIUMINT, może ma być to pole binarne, może podstawowe lub unikalne... o to mi chodzi.
|
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 10:12 |