Здравствуйте. Скажите, будет ли правильно и безопасно, использовать данный код для авторизации на сайте? Код (PHP): if (!isset($_POST['email'])) { // Показываем форму входа } else { $email = trim($_POST['email']); $pass = trim($_POST['password']); if (!empty($pass) && !empty($email)) { $res = login($email, $pass); if ($res === 'OK') { // Все верно, что то делаем } else { // Ошибка } } else { // Ошибка } } function login($email, $pass) { $email = mysql_real_escape_string($email); $pass = mysql_real_escape_string($pass); $user = mysql_query("SELECT * FROM users WHERE email='$email'"); /* .... */ if (count($user) > 0) { if ($user['pass'] === $pass) { //Сессия return 'OK'; } else { return 'Неправильный пароль!'; } } else { return 'Пользователь с таким Email не найден!'; } } Или же, есть лучшее решение? PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
нет. во-первых, вы путаетесь в терминологии. как следствие, вы не понимаете как именно надо реагировать на успех/неудачу аутентификации. во-вторых, что-то с паролем вы делаете непонятное. пароль нельзя хранить в исходном виде. в-третьих, не надо говорить "такой емайл не найден" — незачем давать кому-то инструмент для проверки присутствия человека (его емайла) на сервисе. надо сообщать общий результат: "неверный емайл или пароль". … в-сотых, count($user) эмм... а что у тебя в этой переменной?
По поводу второго: про открытый вид я знаю, просто написал для примера. По поводу третьего: спасибо, учту. А при регистрации сообщать, что такой email присутствует - нормально? По поводу первого: а как правильно реагировать?
почитай на вики про авторизацию, аутентификацию и идентификацию. сценарий аутентификации: пользователь уже идентифицирован? если да — перенаправить его куда он просился или на главную. конец. иначе, если это POST запрос и необходимые поля получены, попробуем проверить введенные данные если данные верны, запомнить состояние пользователя (ты это назвал "сессия") и перенаправить его на этот же адрес. конец. если данные не верны, вывести об этом сообщение вывести форму входа. конец.
Может я что то не понимаю!? Вроде сделал все так же (корме проверки - идентифицирован пользователь или нет)?