Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Zakladanie konta + aktywacja
post 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.
Go to the top of the page
+Quote Post
halfik
post 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%)
X----


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
Go to the top of the page
+Quote Post
rmn
post 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.
Go to the top of the page
+Quote Post
post 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...
Go to the top of the page
+Quote Post
post 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...?
Go to the top of the page
+Quote Post
Liko
post 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ł
Go to the top of the page
+Quote Post
post 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?
Go to the top of the page
+Quote Post
Liko
post 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
Go to the top of the page
+Quote Post
post 4.04.2004, 19:51:36
Post #9





Grupa:
Postów: 0
Pomógł:
Dołączył: --

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


Okej, będe cierpliwie czekał smile.gif
Go to the top of the page
+Quote Post
rafcio8405
post 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
Go to the top of the page
+Quote Post
eS...
post 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??


--------------------
Go to the top of the page
+Quote Post
rafcio8405
post 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
Go to the top of the page
+Quote Post
arogancik
post 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 smile.gif


--------------------
warsztat: w2k3 | apache 1.3.9 | php 4.3.5 | mysql 4.0.15 | mercur mail sever 4.1 | editpad lub notatnik
Go to the top of the page
+Quote Post
rafcio8405
post 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
Go to the top of the page
+Quote Post
arogancik
post 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 smile.gif


--------------------
warsztat: w2k3 | apache 1.3.9 | php 4.3.5 | mysql 4.0.15 | mercur mail sever 4.1 | editpad lub notatnik
Go to the top of the page
+Quote Post
post 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.
Go to the top of the page
+Quote Post
Liko
post 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ć.
Go to the top of the page
+Quote Post
post 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?
Go to the top of the page
+Quote Post
Liko
post 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 questionmark.gif
Go to the top of the page
+Quote Post
post 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.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 10:12