PHP: <?php $log = $_POST['login']; $pas = $_POST['password']; $link = mysql_connect("localhost","root","root"); $db="project"; mysql_select_db($db); $query = "SELECT * FROM user WHERE login='$log'"; $result = mysql_query($query,$link); $resulttoarray = mysql_fetch_array($result); $login=$resulttoarray['login']; $pass=$resulttoarray['password']; if (!$result){ Header("Location: index.php"); die(); } if ($pas != $pass) { Header("Location: index.php"); die(); } else { session_start(); $_SESSION['ID'] = $log; Header("Location: index.php"); die(); } ?> Ну так вот. Если бользователь в базе есть то все нормально - проверка логина и пароля. Но зато если в логин ввести не зареганого юзера то можно войти как угодно. Можно даже и без логина. По логике это PHP: if (!$result){ Header("Location: index.php"); die(); } Но чтото не работает. Поделитесь секретом
О, блин... PHP: <?php $log = $_POST['login']; $pas = $_POST['password']; $link = mysql_connect("localhost","root","root"); $db="project"; mysql_select_db($db); $query = select * from user WHERE login='$log' AND password='$pas'"; // в идеале конечно password='md5($pas)' да еще и с солью бы... $result = mysql_query($query,$link); if (!$result || !mysql_num_rows($result)) // внимание! $result возвращает false не "если ничего не нашел", а "если не выполнился запрос" { Header("Location: index.php"); die(); }else { session_start(); $_SESSION['ID'] = $log; Header("Location: index.php"); die(); } ?>
1. потому-что запрос получается правильным. пример очень плох, но, я думаю, если if ($pas != $pass) { поменять на if ($login && $pas != $pass) { то будет работать
Ну и последний вопрос. В регистрации как сделать чтобы типа PHP: if ($pas=""){ Ведь при "" он пустую строку не проверяет