Proszę o ocenę logowania oraz rejestracji.
Czy taki skrypt jest wystarczający czy ewentualnie coś poprawić, coś zmienić?
<?php include_once('connect.php'); /* warunek sprawdzający, czy ktoś chce aktywować swoje konto */ { $query = mysql_query("UPDATE `users` SET `stan`=1 WHERE `key_id`='".mysql_real_escape_string($_GET['key'])."'"); if($query) login("Twoje konto zostało aktywowane! Możesz się teraz zalogować!"); else login('Błąd podczas aktywacji!'); } /* formularz do logowania */ function login($komunikat = "") { } /* formularz do rejestracji nowego użytkownika */ function register($komunikat = "") { echo '<tr><td>Login:</td><td><input type="text" name="login" maxlength="25" value="'.$_POST['login'].'" /></td></tr>'; echo '<tr><td>Imię:</td><td><input type="text" name="imie" maxlength="25" value="'.$_POST['imie'].'" /></td></tr>'; echo '<tr><td>Nazwisko:</td><td><input type="text" name="nazwisko" maxlength="25" value="'.$_POST['nazwisko'].'" /></td></tr>'; echo '<tr><td>E-mail:</td><td><input type="text" name="email" maxlength="50" value="'.$_POST['email'].'" /></td></tr>'; echo '<tr><td>Telefon:</td><td><input type="text" name="telefon" maxlength="15" value="'.$_POST['telefon'].'" /></td></tr>'; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <?php if($_SESSION['user'] != 1) // sprawdzamy czy użytkownik jest już zalogowany, jeśli nie to przechodzi dalej, jeśli tak to przenosi go na index.php { { if(!isset($_GET['action']) || $_GET['action'] == 'login') login(); // wyświetlamy formularz do logowania elseif($_GET['action'] == 'register') register(); // wyświetlamy formularz do rejestracji } else // jeśli został kliknięty któryś przycisk { { /* skrypt do logowania */ else { $query = mysql_query("SELECT * FROM users WHERE `login`='".mysql_real_escape_string($_POST['login'])."' AND `password`='".sha1(mysql_real_escape_string($_POST['haslo']))."'"); // sprawdzamy czy dane z formularza pasują do danych w bazie if(@mysql_num_rows($query) == 0) login("Podałeś błędne dane!"); // jeśli wynik zapytanie zwraca zero wyników, tzn. że dane są błędne else { if($row['stan'] == 0) login("Konto jest nieaktywne!"); // sprawdzamy czy konto nie zostało aktywowane else { $_SESSION['user'] = 1; // logujemy użytkownika $_SESSION['key_id'] = $row['key_id']; } } } } { /* skrypt do rejestrowania użytkowanika */ else { if(mysql_num_rows(mysql_query("SELECT login FROM users WHERE `login`='".mysql_real_escape_string($_POST['login'])."'")) != 0) // tutaj sprawdzamy czy login nie jest wolny { $_POST['login'] = ""; register("Ten login jest zajęty"); } else { if (eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $_POST['email'])) // sprawdzamy czy adres email ma dobrą strukturę if(mysql_num_rows(mysql_query("SELECT email FROM users WHERE `email`='".mysql_real_escape_string($_POST['email'])."'")) != 0) // sprawdzamy czy na dany adres email jest założone już konto { $_POST['email'] = ""; register("Ten email jest zajęty"); } else { if($_POST['re_haslo'] != $_POST['haslo']) register("Podane hasła są różne!"); // sprawdzamy czy hasła są od siebie różne else { if(mysql_query("INSERT INTO users VALUES('', '".mysql_real_escape_string($_POST['login'])."', '".sha1(mysql_real_escape_string($_POST['haslo']))."', '".mysql_real_escape_string($_POST['imie'])."', '".mysql_real_escape_string($_POST['nazwisko'])."', '".mysql_real_escape_string($_POST['email'])."', '".mysql_real_escape_string($_POST['telefon'])."', '".mysql_real_escape_string($key)."', '0')")) // sprawdzamy czy dane zostały dodane do bazy { $header = "MIME-Versio: 1.0\r\n"."Content-type: text/html; charset=UTF-8\r\n"; $header .= "From: nazwa strony\r\n"; $header .= "Cc: nazwa strony\r\n"; $header .= "Bcc: ".$_POST['email']."\r\n"; $tresc = "Aby aktywować swoje konto kliknij w poniższy link<br /><br />"; $tresc .= '<a href="logowanie.php?action=activate&key='.$key.'">logowanie.php?action=activate&key='.$key.'</a>'; if(mail($_POST['email'], 'Aktywacja konta', $tresc, $header)) // sprawdzamy czy został wysłany email z linkiem aktywacyjnym { $_POST['imie'] = $_POST['nazwisko'] = $_POST['login'] = $_POST['haslo'] = $_POST['re_haslo'] = $_POST['email'] = $_POST['telefon'] = ""; register("Zostałeś zarejestrowany! Sprawdź pocztę i aktywuj konto!"); } else { register("Wystąpił nieoczekiwany błąd!"); // jeśli email nie został wysłany $query = mysql_query("DELETE FROM users WHERE `login`='".mysql_real_escape_string($_POST['login'])."'"); // to usuwamy dane wprowadzone do bazy } } else register("Wystąpił nieoczekiwany błąd!"); } } else { $_POST['email'] = ""; register("Popraw adres e-mail!"); } } } } } } ?> </body> </html>