Witam.
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 */
if(isset($_GET['action']) && isset($_GET['key']) && $_GET['action'] == 'activate') {
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 = "")
{
if($komunikat) echo $komunikat; echo '<form action="logowanie.php?action=login" method="post">'; echo '<tr><td>Login:</td><td><input type="text" name="login" maxlength="25" /></td></tr>'; echo '<tr><td>Hasło:</td><td><input type="password" name="haslo" /></td></tr>'; echo '<tr><td></td><td><input type="submit" name="zaloguj" value="Zaloguj" /></td></tr>'; echo '<tr><td></td><td><a href="logowanie.php?action=register">Utwórz konto</a></td></tr>'; }
/* formularz do rejestracji nowego użytkownika */
function register($komunikat = "")
{
if($komunikat) echo $komunikat; echo '<form action="logowanie.php?action=register" method="post">'; echo '<tr><td>Login:</td><td><input type="text" name="login" maxlength="25" value="'.$_POST['login'].'" /></td></tr>'; echo '<tr><td>Hasło:</td><td><input type="password" name="haslo" /></td></tr>'; echo '<tr><td>Powtórz hasło:</td><td><input type="password" name="re_haslo" /></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>'; echo '<tr><td></td><td><input type="submit" name="zarejestruj" value="Zarejestruj" /></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($_POST['zaloguj']) && !isset($_POST['zarejestruj'])) // jeśli nie został kliknięty przycisk to wyświetlamy formularz {
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
{
if(isset($_POST['zaloguj'])) // dla przycisku logowania {
/* skrypt do logowania */
if(empty($_POST['login']) || empty($_POST['haslo'])) login
("Wypełnij wymagane pola!"); // sprawdzamy czy pola w formularzu nie zostały wypełnione else
{
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'];
header( "refresh:5; url=index.php" ); // przenosimy do na stronę index.php echo 'Zostałeś zalogowany! Zaraz zostaniesz przeniesiony na stronę główną!'; }
}
}
}
if(isset($_POST['zarejestruj'])) // dla przycisku rejestracji {
/* skrypt do rejestrowania użytkowanika */
if(empty($_POST['login']) || empty($_POST['haslo']) || empty($_POST['re_haslo']) || empty($_POST['imie']) || empty($_POST['email'])) register
("Wypełnij wymagane pola!"); // sprawdzamy czy pola w formularzu nie zostały wypełnione else
{
{
$_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ę {
$_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
{
$key = md5(uniqid()); // generujemy unikalny ciąg znaków dla użytkownika {
$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
}
}
else register("Wystąpił nieoczekiwany błąd!");
}
}
else
{
$_POST['email'] = "";
register("Popraw adres e-mail!");
}
}
}
}
}
}
else header("Location: index.php");
?>
</body>
</html>