Przerobiłem troche znaleziony w internecie kod i wygląda on następująco:
index.php
<?php
$login = $_POST["login"];
$haslo = $_POST["haslo"];
if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
function ShowLogin($komunikat=""){
echo "<form action='index.php' method=post>"; echo "Login: <input type=text name=login><br>"; echo "Hasło: <input type=text name=haslo><br>"; echo "<input type=submit value='Zaloguj!'>"; echo "Jeśli nie jesteś zarejestrowany, <a href='rejestruj.php'>tu znajdziesz formularz</a>"; }
?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head>
<title>logowanie</title>
</head>
<body>
<?php
if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany";}
if($_SESSION["zalogowany"]!=1){
{
echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>"; $_SESSION["zalogowany"]=1;
}
else echo ShowLogin
("zle haslo!!!");
}
else echo ShowLogin
("nie dozwolone znaki"); }
}
else ShowLogin();
}
else{
?>
Zalogowałeś się pomyślnie!
<br><a href='index.php?wyloguj=tak'>wyloguj się</a>
<?php
}
?>
</body>
</html>
rejestruj.php
<?php
mysql_connect("", "", "")or
die("Nie można nawiązać połączenia z bazą"); //połączenie z bazą danych
$login = $_POST["login"];
$haslo = $_POST["haslo"];
function ShowForm($komunikat=""){ //funkcja wyświetlająca formularz rejestracyjny
echo "<form action='rejestruj.php' method=post>"; echo "Login: <input type=text name=login><br>"; echo "Hasło: <input type=text name=haslo><br>"; echo "<input type=hidden value='1' name=send>"; echo "<input type=submit value='Zarejestruj'>"; }
?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head>
<title>Formularz rejestracyjny</title>
</head>
<body>
<?php
if($_POST["send"]==1){ //sprawdzanie czy formularz został wysłany
if(!empty($login) && !empty($haslo)) //oraz czy uzupełniono wszystkie dane
{
if(preg_match('#^[A-Za-z0-9_-]+$#', $login)){ //sprawdzenie poprawnosci znaków
if(mysql_num_rows(mysql_query("select * from users where user_login='".htmlspecialchars($login."'"))))ShowForm
("Użytkownik o podanym loginie już istnieje!!!");// sprawdzanie czy użytkownik o podanej nazwie już istnieje else
{
echo "Rejestracja przebiegła pomyślnie. Możesz teraz przejść do <a href='index.php'>strony głównej</a> i się zalogować."; }
}
else ShowForm("nie dozwolone znaki");
}
else ShowForm("Nie uzupełniono wszystkich pól!!!");
}
else ShowForm();
?>
</body>
</html>
1. czy jest ten skrypt bezpieczny? jeśli nie to jakie zmiany proponujecie
2. jak zabezpieczyć najlepiej w md5() hasło do bazy danych?
<?php
?>
3. użyłem funkcji preg_match do zabezpieczenia formularza ale działa on tylko dla jednej zmiennej $login lub $haslo:
<?php
?>
gdy próbuje napisać tak(by obydwa pola formularza zabezpieczyć, bo co mi da że pole loginu zabezpiecze tylko jeśli w polu hasła można wpisać co sie chce..):
<?php
if(preg_match('#^[A-Za-z0-9_-]+$#', $login, $haslo)) ?>
to pojawia sie błąd.
jak tego użyć by zabezpieczyć obydwa pola?
PS nie mam pojęcia dlaczego nie koloruje składni :/ być może kod html to powoduje ale nie wiem...
Ten post edytował predator 16.04.2008, 16:35:51