Proszę o rzucenie okiem na ten skrypt rejestracji, czy jest on poprawnie napisany i czy jest on przede wszystkim bezpieczny.
Tak jak już wcześniej pisałem, próbuje nauczyć się prawidłowego pisania skryptów w php dlatego będę wdzięczny za wskazanie błędów.
1. rejestracja.php ( formularz rejestracji. Tylko HTML. )
<form action="zarejestruj.php" method="post"> <table border="0"> <tr> <input type="text" name="login" id="login" /> </tr> <tr> <input type="password" name="haslo" id="haslo" /> </tr> <tr> <input type="password" name="haslo2" id="haslo2" /> </tr> <tr> <input type="text" name="email" id="email" /> </tr> <tr> <input type="text" name="loginwspak" id="loginwspak" /> </tr> <tr> </tr> </table> </form> * Login wspak - w tym polu należy wpisać swój logi od tyłu np: login0123, 3210nigol. <br> Zabezpiecznenie to ma na celuoc ochronę przed botami.
2. funkcje_podstawowe.php - wszystkie funkcje, które będą używane przy rejestracji.
<?php function Polacz() { if (!$nowe_polaczenie) { } if (!$wybierz_baze_danych) { } } /* Funkcja Połącz() służy do nawiązywania połączenia z bazą danych oraz wybierania bazy danych * oraz wybiera bazę danych, z którą chcemy pracować. * mysql_connect przyjmuje następujące argumenty ("ades serwera", "login", "hasło") * mysql_select_db jako argument przyjmuje nazwę bazy danych, z która ma zostać nawiązane * połączzeni. * * W przypadku gdy nawiązanie połączenia z bazą danych lub wybór bazy danych zakończy * się niepowodzeniem zostanie wyświetlony odpowiedni komunikat. */ function sprawdzanie_poprawnosci_hasla ($hasło, $hasło2){ if ($hasło != $hasło2) { return("Pola hasło i powtórz hasło muszą być identyczne."); } return("Hasło musi zawierać przynajmniej 6 znaków."); } return("Hasło zawiera niedozwolone znaki. Hasło może składać się tylko z liter i cyfr."); } return("Hasło musi zawierać przynajmniej jedno cyfrę."); } else { return("Poprawny"); } } /* function sprawdzanie_poprawności_hasła przyjmuje dwa argumenty hasło, oraz powtórzone hasło. * 1.Sprawdza czy oba hasła są identyczne. * 2.Sprawdza czy hasło zawiera przynajmniej 6 znaków. * 3. Sprawdza czy hasło składa się tylko z polskich liter małych i dużych oraz cyfer. * 4. Sprawdza czy hasło zawiera chociaż jedną cyfrę. * Jeśli, któryś z tych warunków nie będzie spłeniony zostanie zwrócony stosowany komunikat. * Jeśli wszystkie warunki zostaną spełonionę funkcja zwróci komuniakt: "Poprawny". */ function sprawdzanie_poprawnosci_email($email) { return("Wprowadzony przez Ciebie adres e-mail jest nieprawidłowy."); } if ($liczba_wierszy !=0 ) { return("Ten adres e-mail znajduje się już w bazie danych."); } else { return("Poprawny"); } } /* 1.preg_match() sprawdza czy e-mail jest poprawny. /*2. Funkcja mysql_query wykonuje zapytanie do bazy danych. Pobiera z niej loginy przypisane do * 3. danego adresu e-mail. * 4. mysql_num_rows() liczy ile wierwszy zwróciło zapytanie do bazy danych. * 5. Następnie sprawdzane jest czy taki adres już nie istnieje w bazie danych. */ function sprawdzanie_poprawnosci_loginu($login) { return("Login niepoprawny. Login może składać się tylko z liter i cyfr!"); } return("Login jest za długi. Login może zawierać maksymalnie 16 znaków. "); } if ($liczba_wierszy !=0 ) { return("Ten login jest już zajęty przez innego użytkownika."); } else { return("Poprawny"); } } /* Funkcja sprawdza czy login składa się z dozwolonych znaków. ( cyfry, małe i duże litery ) * Funkcja sprawdza czy login nie jest za długi. * Funkcja sprawdza czy login jest wolny. * Jeśli login jest porpawny, krótszy i niezajęty funkcja zwraca "Poprawny". */ function antybot($login,$loginwspak) { return("Pole login wspak zostało wypełnione niepoprawnie. "); } else { return("Poprawny"); } } ?>
3. zarejestruj.php ( tutaj odbierany jest wcześniej wysłany formularz z pliku rejestracja.php )
<?php if ( $_POST['login'] && $_POST['haslo'] != "" && $_POST['haslo2'] != "" && $_POST['email'] != "" && $_POST['loginwspak'] != "" ) { /*Instrukcja if sprawdza czy zostaly wypelnione wszystkie pola. Jesli zostaly wkona sie caly * skrypt rejestracji. W przeciwnym przypadku zostanie wyswietlony komunikat "wszystkie pola musza *byc uzupelnione. */ require('funkcje_podstawowe.php'); Polacz(); $licznik_bledow = 0; /* require() wczytuje plik podstawowe_funkcje.php. * zmiannym login, haslo, haslo2,email, loginwspak zostaja przypisane dane pobrane * z tablicy POST i przefiltrowane za pomoca funkcji mysql_real_escape_string. * Zostaje utworzona nowa zmiena licznik_bledów o wartosci 0. * licznik_bledów bedzie zliczal ile pól zostalo wypelnionych przez uzytkownika niepoprawnie. */ if ( sprawdzanie_poprawnosci_loginu($login) != "Poprawny" ) { $licznik_bledow ++; } //Instrukcja sprawdza czy login jest poprawny. if ( sprawdzanie_poprawnosci_hasla($haslo,$haslo2) != "Poprawny" ) { $licznik_bledow ++; } //Instrukcja sprawdza czy jest hasla sa poprawne.. if ( sprawdzanie_poprawnosci_email($email) != "Poprawny" ) { $licznik_bledow ++; } //Instrukcja sprawdza czy e-mail jest poprawny. if ( antybot($login,$loginwspak)!="Poprawny" ) { $licznik_bledow ++; } if ($licznik_bledow == 0) { $wprowadz = "INSERT INTO `users` (`login`, `haslo`, `mail`) VALUES('$login', '$haslo', '$email')"; } /* Jeśli licznik_bledow jest równy 0, czyli wszystkie pola zostały wypełnione poprawnie - * dokona się rejestracja. W tabeli useres zostaną umieszczone dane nowego urzytkownika. */ } else { } ?>
Z góry dziękuje za pomoc i opinie.
pozdrawiam
Macios25