Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> [PHP]Zawansowany system rejestracji
b_chmura
post
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
Go to the top of the page
+Quote Post
skowron-line
post
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
  1. <?php
  2. return addslashes(strip_tags($co));
  3. ?>

troche mniej kodu

Kod
$max_login    = 15;
$min_login    = 3;
$max_haslo    = 20;
$min_haslo    = 6;

a moze
  1. <?php
  2. define("MAX_LOGIN", 15);
  3. define("MIN_LOGIN",3);
  4. drfine("MAX_HASLO",20);
  5. define("MIN_HASLO",6);
  6. ?>


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
Go to the top of the page
+Quote Post
phpion
post
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?...
Go to the top of the page
+Quote Post
b_chmura
post
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
Go to the top of the page
+Quote Post
nospor
post
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)
Go to the top of the page
+Quote Post
phpion
post
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
Go to the top of the page
+Quote Post
b_chmura
post
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
Go to the top of the page
+Quote Post
phpion
post
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(b_chmura @ 12.09.2007, 18:24:53 ) *
Dzięki temu że napisałem "zaawansowany" wzbudziłem w was większe zainteresowanie

To przykre.

PS: wg mnie to nie system rejestracji, a skrypt rejestracji, który można wykorzystywać tylko w takiej postaci; rozbudowa o dodatkowe pola to zabawa z kodem
Go to the top of the page
+Quote Post
parzol
post
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)
Go to the top of the page
+Quote Post
b_chmura
post
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
Go to the top of the page
+Quote Post
sf
post
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.
Go to the top of the page
+Quote Post
b_chmura
post
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.
Go to the top of the page
+Quote Post
nospor
post
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
Go to the top of the page
+Quote Post
b_chmura
post
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
Go to the top of the page
+Quote Post
nospor
post
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.
Go to the top of the page
+Quote Post
b_chmura
post
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 :)
Go to the top of the page
+Quote Post
lectric
post
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.
Go to the top of the page
+Quote Post
sf
post
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
Go to the top of the page
+Quote Post
mwojcik
post
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.
Go to the top of the page
+Quote Post
zur887
post
Post #20





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 19.04.2006

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


  1. <td class="RejestracjaInput" id="token"><img src="token.php?token_s=200&token_w=20&token=C94235"></td>

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)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.08.2025 - 08:10