![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) ![]() ![]() |
Witam
Przedstawiam wam zaawansowany system rejestracji oparty o bazę MySQL wsparty Ajaxem. Krótki opis i zalety: - Przyjazny formularz który "w biegu" sprawdza czy: - podany login nie jest już czasem zajęty - podany login nie jest za krótki bądź za długi - podany mail jest poprawny (zapis) - podane hasło nie jest za krótkie/długie - podane hasła są takie same - podany token jest poprawny - Mail potwierdzający z aktywacją: - na mail podany w formularzu zostaje wysłany link aktywujący konto - jeśli do czasu 48 godzin użytkownik nie wejdzie na niego jego login jest znów ogólno dostępny - Jedno obrazkowy token z tłem: - token automatycznie generowany poprzez php - wymagana biblioteka gd - Hashowanie hasła i wiele wiele innych. Kod: - check.php - plik wykorzystywany przez Ajax do na bieżącego sprawdzania formularza - token.php - plik w którym powstaje obrazek jpg z tokenem - funkcje.php - plik z funkcjami (poprawność maila i filtrowanie przychodzących danych) - config.php - plik konfiguracyjny (łączenie z bazą, informacje na temat dopuszczalnych długości danych) - rejstracja.php - plik główny (w środku przykład budowy tabeli) - advAjax.js - biblioteka advAjax Przykład działania - w tym przykład prawidłowego formularza (w kodzie strony niezbędne funkcje do wykorzystania wszystkich możliwości) Chciałbym abyście go ocenili (możliwie jak najbardziej rygorystycznie) Poradzili co zmienić/ulepszyć/dodać/usunąć itp itd liczę na waszą pomoc. Pozdrawiam Chmura |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
wszytko fajnie tylko moglbys fajnei tylko moglbys np w przypadku kiedy sa blednie wypelnione pola zablokowac przycisk wyslania formularza
Kod function filter($co)//filtruje dane przy rejestracji { $co = addslashes($co); $co = strip_tags($co); return $co; } a mozna tez tak
troche mniej kodu Kod $max_login = 15; $min_login = 3; $max_haslo = 20; $min_haslo = 6; a moze
Kod if(!empty($new_mail)) { function check_mail($email) { $ok = "/[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z]{2,4}/"; return (preg_match($ok, $email))? true: false; } if(!check_mail($new_mail)) { echo '<br /><center><font color="Red">Mail "'.$new_mail.'" jest niepoprawny!</font></center><br />'; } } tu piszesz funkcje ktora masz juz zapisana w pliku funkcje.phps wystarczy dolaczyc ten plik i odwolac sie do funkcji Kod $error = ''; $error .= 'Podany Login jest juĹź zajÄ�ty!<br />'; mozesz to do tablicy wrzucac i dopiero przy wyswietlaniu dawac <br /> albo wogole w <span style="display:block"> a pokaz jeszcze kod JS bo jakos nie zauwazylem w zadnym pliku Ten post edytował skowron-line 11.09.2007, 21:39:38 |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
1) Po błędnym wypełnieniu formularza trzeba go wypełniać na nowo
2) Stworzyłem sobie konto dla loginu składającego się z 3 spacji 3) E-mail postaci ja@ja@ja.pl przechodzi walidację 4) Wpisz jako hasło 'edek' <- bład 6 znaków o czym jestem informowany po przejściu do pola powtórzenia hasła. W pole powtórki wpisuję 'edekkk' i dostaję ten sam komunikat (powinno być że hasła różnią się od siebie i że za krótkie jest 1 bo 2 jest ok). Poprawiam hasło 1 wpisując 'edekkk' i nadal mi przy 2 pisze, że jest za krótkie :| Dopiero przechodząc na pole tokena komunikat znika. PS: co w tym systemie jest zaawansowanego?... |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) ![]() ![]() |
Cytat a pokaz jeszcze kod JS bo jakos nie zauwazylem w zadnym pliku Kod function ShowHide(element) { if(document.getElementById(element).style.display == '') { document.getElementById(element).style.display = 'none'; } else { document.getElementById(element).style.display = ''; } } function Check(adres, element, id) { var co = document.getElementById(id).value; advAJAX.get({url: adres+co, onSuccess : function(obj) {document.getElementById(element).innerHTML = obj.responseText; }}) } function CheckHaslo(adres, adres2, element, id, id2) { var co1 = document.getElementById(id).value; var co2 = document.getElementById(id2).value; advAJAX.get({url: adres+co1+adres2+co2, onSuccess : function(obj) {document.getElementById(element).innerHTML = obj.responseText; }}) } Cytat 1) Po błędnym wypełnieniu formularza trzeba go wypełniać na nowo to mam pokazać błędne dane? Cytat 2) Stworzyłem sobie konto dla loginu składającego się z 3 spacji 3) E-mail postaci ja@ja@ja.pl przechodzi walidację moje nie przyuważenie Cytat 4) Wpisz jako hasło 'edek' <- bład 6 znaków o czym jestem informowany po przejściu do pola powtórzenia hasła. W pole powtórki wpisuję 'edekkk' i dostaję ten sam komunikat (powinno być że hasła różnią się od siebie i że za krótkie jest 1 bo 2 jest ok). k**** jestem ślepy chyba Cytat Poprawiam hasło 1 wpisując 'edekkk' i nadal mi przy 2 pisze, że jest za krótkie :| Dopiero przechodząc na pole tokena komunikat znika. wykorzystałem zdarzenie onBlur czyi dopiero po odznaczeniu danego pola jest on weryfikowany |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat to mam pokazać błędne dane Wyobraź sobie ze wypelnilem full tych pol, przy czym przy jednym sie jorbnalem. I tylko dlatego ze nie potrafisz/nie chcesz/nie umiesz* mi wstawic moich starych danych mam na nowo wszystko wprowadzac? Nie tedy droga. A tak podasz mi to co wprowadzilem, a ja jedynie poprawie to co jest źle.W sprawdzaniu loginu masz mysql_guery zamiast mysql_query. Popraw to i daj znac, bo chce cos sprawdzic (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) * - niepotrzebne skreslic edit: dołączam sie do pytania: co tu jest zaawansowanego? Korzystanie z ajaxa to juz chleb powszedni (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Swoją drogą: chyba nadmiernie wykorzystujesz Ajax. Po co wykorzystujesz go do sprawdzenia poprawności adres e-mail? Do weryfikacji haseł? Do sprawdzenia czy podany login nie jest zajęty - jak najbardziej, jednak do wcześniej wspomnianych elementów dużo lepiej (szybciej) będzie się sprawował JS.
PS: masz porażający sposób informowania o ewentualnych błędach -> config.php i błąd wyboru bazy... Ten post edytował phpion.com 12.09.2007, 14:55:26 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) ![]() ![]() |
Cytat W sprawdzaniu loginu masz mysql_guery zamiast mysql_query. Popraw to i daj znac, bo chce cos sprawdzic poprawiłem Dzięki temu że napisałem "zaawansowany" wzbudziłem w was większe zainteresowanie - przytaczając mi wszystkie błędy i obalając całe to zaawansowanie mówicie mi co zmienić co jest bee i co dodać wszystko z plusem dla mnie Jeśli chodzi o JS'owskie szybsze rozwiązania - po prostu znam tylko podstawowe funkcje, nie potrafiłbym skonstruować dobrej funkcji |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 1 Dołączył: 7.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Zgadzam sie z moim przedmowca!! To przykre zeby takimi tanimi i niemoralnymi zagrywkami zwracac na siebie uwage!!
Lepiej uczyn to wybitnym kodem i wiedza!! (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif) |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) ![]() ![]() |
Panowie mnie nie zrozumieli i nie doczytali... nie miałem na myśli że widząc to będziecie piać z zachwytu a jedynie wykrztusicie z siebie więcej by uświadomić mi ze jestem w błędzie - to wszystko idzie z plusem dla mnie
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Jakie zmienne globalne? Jakie define? Klasa i constant (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Bez klasy to ten skrypt jest nie do przeniesienia do innych skryptów ;] Do tego uwielbiam jak ktoś wkłada html do środka klasy, już nie wspominam o używaniu font.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) ![]() ![]() |
@sf - jeśli chodzi o html i font to nie widzę problemu żeby stosować skoro błędny komunikat zawsze będzie na czerwono a poprawny na zielono.
Jeśli o klasy to nie mam zielonego pojęcia jak one działają jak się wykorzystuje itp itp - gdybyś był tak miły i wprowadził mi jakieś praktyczne (z opisem) podstawy byłbym wielce zobowiązany. |
|
|
![]()
Post
#13
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Twój zaawansowany system rejestracji nie jest bezpieczny. Wlasnie usunalem ci wszystkie rekordy z tabeli pozostawiajac jedynie hackedbynospor. Mam nadzieje ze sie nie gniewasz. Chcialem sprawdzic czy mi sie to uda
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) ![]() ![]() |
sql injection - zorientowałem się jak kazałeś mi bym poprawił literówkę
cały czas pracuje nad kolejną wersją uwzględniając wasze posty i swoje odkrycia dzięki za zainteresowanie |
|
|
![]()
Post
#15
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
no to skoro sie zorientowales wczesniej to trzeba bylo poprawiac (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
No ale na pocieszenie dodam ze zajelo mi to troche czasu. Musialem wymyslic dobre zapytanie by obejsc wszystkie Twoje ify w php. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) ![]() ![]() |
w nowej wersji dopuszczalne znaki do wprowadzenia w pola input będę z przedziału a-zA-z0-9_- dodatkowo brak możliwości wprowadzania spacji
z początku myślałem ze jest włączone magic_quotes ale widocznie się myliłem i trzeba będzie zastosować addslashes Jakbyście mogli to doszukujcie się błędów (na pewno jeszcze są) i piszczcie. sf - czekam na mały wykładzik :) |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 167 Pomógł: 1 Dołączył: 22.08.2006 Skąd: universe Ostrzeżenie: (0%) ![]() ![]() |
Wyświetlanie błędów obsługi haseł , powinieneś poprawić.
Niepotrzebnie wyświetla komunikat przy powtórnym wpisaniu hasła , skoro hasło w pierwszym polu nie spełnia warunków. |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
http://pl2.php.net/oop - przetłumaczone na język polski (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) na wortalu są też artykuły, ale w mojej opinii na pewno nie tłumaczą podstaw
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 22.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie sprawdzałem za bardzo jak wygląda twój system rejestracji, oprócz zobaczenia, że działa, ale pokusiłem sie o sprawdzenie co masz na serwerze, jeżeli masz włączone indeksowanie plików w katalogach. I co mi sie udało uzyskać dzięki temu, że masz wszystko niezabezpieczone ?
Kod root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/bin/false daemon:x:2:2:daemon:/sbin:/bin/false adm:x:3:4:adm:/var/adm:/bin/false lp:x:4:7:lp:/var/spool/lpd:/bin/false sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/bin/false news:x:9:13:news:/usr/lib/news:/bin/bash uucp:x:10:14:uucp:/var/spool/uucppublic:/bin/false operator:x:11:0:operator:/root:/bin/bash man:x:13:15:man:/usr/share/man:/bin/false postmaster:x:14:12:postmaster:/var/spool/mail:/bin/false smmsp:x:209:209:smmsp:/var/spool/mqueue:/bin/false ... ... ... Brzmi znajomo ? Proszę cię - zabezpiecz swoje skrypty, które tam masz i wyłącz indeksowanie - przecież mając taki dostęp jak teraz mam praktycznie dostęp do wszystkiego na tym serwerze. |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 19.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
to chyba jednak ten token nie jest potrzebny, co? w $_SESSION spróbuj go przesyłać (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 08:10 |