Учусь PHP. Решаю задачу "Создать свой кабинет".
Обработчик регистрации сделал. В базу пишет. В базе 5 полей.
Надо при вводе пары Логин/Пароль выдавал все поля по этой строке.
PHP
Помогите с авторизацией
Не слушай никого.
Мемкеш для тебя - из пушки по воробьям. Тебе бы работу с БД осилить, а не хайлоад пилить,
Тем более, что сравнивать ассоциативный массив (существующй только в исполняемом скрипте) с внешним хранилищем вообще некорректно.
Объекты тоже не надо пытаться рисовать - только дров наломаешь.
function.mysql-real-escape-string.php давным давно устарела.
Такое ощущение, что некоторые тут не другим помогают, а просто пишут набор умных слов, чтобы посолиднее выглядеть.
Тебе надо всего несколько вещей.
Во-первых, научиться работать с mysql. В смысле освоить базовые запросы.
К примеру, не запрашивать из таблицы только одно поле, если нужны все.
Во-вторых, научиться работать с БД из РНР. Вот это вот всё mysql_query("SELECT UserID FROM users WHERE login='$login' AND password='$password'"); - это Содом и Гоморра.
Использовать надо по крайней мере PDO. И НИКОГДА не передавать пееменные в запрос напрямую, а только через подстановки:
$stmt = $pdo->prepare("SELECT * FROM users WHERE login=?");
$stmt->execute(array($login));
$user = $stmt->fetch();
if (!$user OR $user['password'] != $password) {
exit ("Извините, введённый вами логин или пароль неверный. ");
}
В-третьих, научиться работать с сессиями.
В частности перед обращением к $_SESSION сессию надо стартовать.
В-четвертых, пароль надо хэшировать, с помощью
http://php.net/manual/ru/book.password.php
Мемкеш для тебя - из пушки по воробьям. Тебе бы работу с БД осилить, а не хайлоад пилить,
Тем более, что сравнивать ассоциативный массив (существующй только в исполняемом скрипте) с внешним хранилищем вообще некорректно.
Объекты тоже не надо пытаться рисовать - только дров наломаешь.
function.mysql-real-escape-string.php давным давно устарела.
Такое ощущение, что некоторые тут не другим помогают, а просто пишут набор умных слов, чтобы посолиднее выглядеть.
Тебе надо всего несколько вещей.
Во-первых, научиться работать с mysql. В смысле освоить базовые запросы.
К примеру, не запрашивать из таблицы только одно поле, если нужны все.
Во-вторых, научиться работать с БД из РНР. Вот это вот всё mysql_query("SELECT UserID FROM users WHERE login='$login' AND password='$password'"); - это Содом и Гоморра.
Использовать надо по крайней мере PDO. И НИКОГДА не передавать пееменные в запрос напрямую, а только через подстановки:
$stmt = $pdo->prepare("SELECT * FROM users WHERE login=?");
$stmt->execute(array($login));
$user = $stmt->fetch();
if (!$user OR $user['password'] != $password) {
exit ("Извините, введённый вами логин или пароль неверный. ");
}
В-третьих, научиться работать с сессиями.
В частности перед обращением к $_SESSION сессию надо стартовать.
В-четвертых, пароль надо хэшировать, с помощью
http://php.net/manual/ru/book.password.php
Запрос чоле?
SELECT * WHERE login = "login"
SELECT * WHERE login = "login"
1) $_SESSION['password']=$password никогда так не делай.
Зачем в сессию это сохранять? Логику можешь объяснить.
И пароль в открытом виде хранишь, да?
2) Вместо ассоциативного массива используй сериализуемые объекты + key-value хранилище (MemCached)
3) mysql_query НЕ НУЖНО ИСПОЛЬЗОВАТЬ, читать авторы твоего учебника не умеют. Используй PDO или лучше сразу IdiORM, который поверх PDO написан.
Отправь им ссылку, пусть глаза разуют http://php.net/manual/ru/function.mysql-query.php
http://ruhighload.com/post/Php+memcache+sessions
http://php.net/manual/ru/oop4.serialization.php
http://stackoverflow.com/questions/5514961/using-session-variable-with-objects
Зачем в сессию это сохранять? Логику можешь объяснить.
И пароль в открытом виде хранишь, да?
2) Вместо ассоциативного массива используй сериализуемые объекты + key-value хранилище (MemCached)
3) mysql_query НЕ НУЖНО ИСПОЛЬЗОВАТЬ, читать авторы твоего учебника не умеют. Используй PDO или лучше сразу IdiORM, который поверх PDO написан.
Отправь им ссылку, пусть глаза разуют http://php.net/manual/ru/function.mysql-query.php
http://ruhighload.com/post/Php+memcache+sessions
http://php.net/manual/ru/oop4.serialization.php
http://stackoverflow.com/questions/5514961/using-session-variable-with-objects
Похожие вопросы
- PHP - Сойдёт ли авторизация, или менять?
- Пишу авторизацию (php). Куки не работают
- оцените мою первую регистрацию и авторизацию
- Авторизация php и регистрация проблемы с хэшэм
- Как сделать регистрацию и авторизацию на php без mysql. Напишите пример записи
- Почему код авторизации и регистрации на PHP, написанный 3 года назад в видео на ютубе, сейчас не работает? И как быть?
- Не работает авторизация на php
- PHP MYSQL после ввода запроса , отображается пустая строка перед 1 кой, немогу понять Помогите пожалуйста
- Кто хорошо программирует и поможет с сайтом?. Разумеется не бесплатно
- Помогите пожалуйста написать скрипт в perfect click
В '$login' можно отправить закомментированную строку, валидную с точки зрения SQL и сформировать зловредный запрос с инъекцией нужной нагрузки.
Должно быть экранирование и фильтрация входных данных
http://php.net/manual/ru/function.mysql-real-escape-string.php