Poprawiłem to według wskazówek.
<?php
// zabezpieczenie danych odebranych z $_POST
// zabezpieczenie danych wysyłanych do bazy
// odbieranie i sprawdzenie danych z formularza $_POST
if (isset($_POST['signin'])){
if (isset($_POST['login']) && isset($_POST['password'])){ //sprawdzenie czy login i hasło zostało przesłane
$login = zgp($_POST['login']); //oczyszczenie funkcją
$password = $_POST['password'];
//sprawdzanie loginu
$loginnotallowed = array( 'admin', 'administrator', 'admini', 'root', 'reboot', 'poweroff', ' '); if(in_array($login, $loginnotallowed)) {$error=1;} //porównanie loginu z listy zablokowanej if (empty($login)) {$error=1;} //sprawdza czy pole jest puste if(!preg_match("/[a-z0-9_]/",$login)){$error=1;} // tylko małe litery i liczby oraz dolny myślink if(preg_match("/[A-Z]/",$login)){$error=1;} // błąd w przypadku wpisania dużych liter if(preg_match("/[\s\r\n]/",$login)){$error=1;} //błąd w przypadku użycia spacji if(is_array($login)){$error=1;unset
($login);} //błąd w wypadku tablicy i usunięcie jej
//sprawdzanie hasła
if (empty($password)) {$error=1;} //sprawdza czy pole jest puste if(is_array($password)){$error=1;unset
($password);} //błąd w wypadku tablicy i usunięcie jej
if ($error){echo 'Niepoprawny login lub hasło';}
if (!$error){// jeśli zadny z powyższych ifów nie zwrócił błedu $error = 1;
require_once('connect.php'); //połączenie z bazą
$login = wds($_POST['login']); //oczyszczenie funkcją wysyłającą do bazy
$password = md5($_POST['password']); //kodowanie md5
$sprawdzlogin = mysql_query("SELECT id, login, password FROM userlogin WHERE login = '$login' AND password = '$password' LIMIT 1"); $wyniksprawdz = mysql_num_rows($sprawdzlogin); //sprawdzanie loginu i hasła
if(!$wyniksprawdz){//sprawdzanie wynikiu odebranego z bazy
$errordb=1; echo 'Niepoprawny login lub hasło'; }
if(!$errordb){ // logowanie
$_SESSION['logon'] = 1; //potwierdza poprawne zalogowanie
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; //umieszcza w sesji adres IP użytkownika
$_SESSION['useragent'] = $_SERVER['HTTP_USER_AGENT']; //umieszcza w sesji useragenta użytkownika
header('Location: http://'.DOMAIN_NAME
.'/start');
}
}
}
}
Teraz jest dobrze? Macie jeszcze jakieś propozycje, sugestie odnośnie poprawienia bezpieczeństwa? Zdaję sobie sprawę że temat był wałkowany nie raz, jednak przy właśnie takim wałkowaniu można się czegoś nauczyć

ps. czy któryś z moderatorów mógłby poprawić temat? U mnie wyskakuje komunikat że nie mogę tego zrobić przy zapisywaniu.