1) Czy skrypt Waszym zdaniem jest bezpieczny ...
2) Czy można go jakoś zoptymalizować ...
3) ... ? może macie jakieś propozycje?
Rejestracja użytkownika w serwisie – pliki index.html, rejestracja.html, list.php, potwierdz.html
1) Formularz – index.html
<form action="..." method="POST"> //imie <input type="text" name="imie" size="30" style="font-family: Verdana; color: #000000; font-size: 7pt; height: 20px; border: 1px solid #ECEBEB"> //nazwisko <input type="text" name="nazwisko" size="30" style="font-family: Verdana; color: #000000; font-size: 7pt; height: 20px; border: 1px solid #ECEBEB"> //user <input type="text" name="user" size="30" style="font-family: Verdana; color: #000000; font-size: 7pt; height: 20px; border: 1px solid #ECEBEB"> //password <input type="password" name="password" size="30" style="font-family: Verdana; color: #000000; font-size: 7pt; height: 20px; border: 1px solid #ECEBEB"> //password2 <input type="password" name="password2" size="30" style="font-family: Verdana; color: #000000; font-size: 7pt; height: 20px; border: 1px solid #ECEBEB"> <input type="text" name="email" size="30" style="font-family: Verdana; color: #000000; font-size: 7pt; height: 20px; border: 1px solid #ECEBEB"> //przycisk <input type="image" value="rejestruj" src="..." width="..." height="..."> </form>
2) Odbiór danych z formularza – rejestracja.html
<?php function odbierz($pole) { } $imie=odbierz($_POST['imie']); $nazwisko=odbierz($_POST['nazwisko']); $user=odbierz($_POST['user']); $password=odbierz($_POST['password']); $password2=odbierz($_POST['password2']); $email=odbierz($_POST['email']); //ten adres będzie w nagłówku wiadomości $twoj_adres="jakis adres"; //sprawdzamy pole imie $blad++; } //sprawdzamy pole nazwisko $blad++; } //sprawdzamy czy podany login nie znajduje się na liscie zabronionych $unav_logins = array('admin', 'administrator', 'admini', 'root', 'bin', 'daemon', 'adm', 'lp', 'sync', 'shutdown', 'halt', 'mail', 'news', 'uucp', 'operator', 'games', 'mysql', 'httpd', 'nobody', 'dummy', 'www', 'cvs', 'shell', 'ftp', 'irc', 'debian', 'ns', 'download', ' '); $blad++; } //sprawdzamy pole user $blad++; echo "<font color=\"#000000\">Login musi mieć od 3 do 50 znaków bez polskich liter i spacji.</font>"; } else { //wybieramy tabele user include('user.php'); $blad++; } } //sprawdzamy pole password if($password !== $password2) { $blad++; } $blad++; } //sprawdzamy pole email $blad++; } //w przypadku wystapienia bledu pokaz link powrot w przeciwnym wypadku wykonuj skr pt dalej if ($blad!=0) { } else { if ($blad==0) { //tworzymy unikalny kod wiadomości w celu potwierdzenia rejestracji //szyfrujemy hasło $wyni=mysql_query("INSERT INTO $mysql_tabela VALUES('$imie', '$nazwisko', '$user', '$password', '$kod', 1, NOW(), '$email')"); //w przypadku braku błędów wysyłamy list potwierdzajacy rejestracje if ($wynik) { //wczytujemy list do wysłania include('list.php'); //wysyłamy dane na podany adres email w trakcie rejestracji } else { echo"Wystąpił błąd. W przypadku ponownego pojawienia się komunikatu skontaktuj s
ię z dministratorem <a href=\" \">kontakt</a>"; } } } ?>
3) zawartość pliku list.php
<?php $list="Aby potwierdzic rejestracje w serwisie … kliknij w ciagu 48 godzin na adres: … /potwierdz.html?kod=$kod Jezeli nie chcesz sie rejestrowac, zignoruj ten list. "; ?>
4) zawartość pliku potwierdz.html
<?php //zawartość pliku potwierdz.html if ($kod<>"") { //wybieramy tabele user include('user.php'); WHERE data<=DATE_SUB(NOW(),INTERVAL 2 DAY) and status=1"); SET status='5', data=NOW() WHERE kod='$kod' and status=1"); WHERE kod='$kod' and status=5"); } } echo "Rejestracja nie może zostać dokończona - sprawdź czy link jest poprawny lub skontaktuj się z administratorem <a href=\" … \">kontakt</p>"; } ?>
co o tym sądzicie?