Я пытаюсь закончить этот сайт, который я сейчас создаю, но я застрял.
Я хочу создать таблицу под названием «заказы» в моей БД. Я хочу, чтобы эта таблица была связана с моей таблицей пользователей, чтобы, когда пользователь переходит на свою страницу orders.php (после входа в систему), он видит все свои текущие и предыдущие заказы.
Это будут мои поля таблицы / столбцы:
Я бы
имя пользователя
порядковый номер
описание
количество
Всего
Это мой подход:
Каждый раз, когда создается новый заказ, вставьте все поля таблицы / столбцы в зависимости от выбора пользователя (выбранный материал для заказа), но имя пользователя будет единственным значением, полученным из переменной $ _SESSION или $ _COOKIE, которая содержит имя пользователя. Затем, как только пользователь зайдет в orders.php, я выполню запрос, чтобы показать все заказы, которые заказал только это имя пользователя. Обратите внимание, что я очищаю все свои данные ввода / вывода и не храню конфиденциальные данные в моих файлах cookie. Моя система спроектирована так, что она использует только сеанс в качестве метода аутентификации, поэтому вам нужно входить в систему каждый раз, когда вы закрываете браузер, но это нормально.
1) Это безопасный подход? Есть ли у вас какие-либо предложения / комментарии?
2) Не могли бы вы помочь мне построить запрос?
Я действительно не работал с реляционными базами данных, поэтому я немного растерялся. Как я могу назвать все заказы из таблицы «orders», где username = «username from session»?
Пока у меня есть это:
"SELECT * FROM orders WHERE username = ? " //(Using PDO)
Я знаю, что это сработает, но моя проблема в том, чтобы в случае захвата сеанса или чего-то в этом роде, пользователь мог бы получать заказы любых пользователей, или нет?
Спасибо, что объяснили это немного дальше и помогли мне!
Ура!
Быть осторожен! Пожалуйста, не создавайте простой текстовый файл cookie, содержащий читабельный идентификатор пользователя (например, user2345995
или же OllieJones
). Для злоумышленника слишком легко подделать такое печенье, просто угадав, и тогда информация ваших пользователей просочится.
Вы работаете в php. Поэтому вы можете использовать механизм сессии php для хранения вашего ID пользователя и других значений. php использует трудно угадываемые идентификаторы сеансов (SID) и сохраняет их в файле cookie или в виде sid=1234abcd9875
Параметр в URL.
Ради целостности вашей системы, пожалуйста, прочтите это. Это на самом деле довольно хорошо продуманная функция, и она была в дикой природе в течение пятнадцати лет или около того: она отлажена.
http://php.net/manual/en/session.idpassing.php
Если вы используете систему сессий, вы в основном делаете это на своей первой странице, странице входа в систему.
session_start();
...
$_SESSION['username'] = $username; /* which you get by logging in */
...
На странице просмотра заказа вы делаете что-то похожее, чтобы получить имя пользователя и использовать его в запросе.
session_start();
...
$orderstmt = $pdoconn->prepare("SELECT * FROM orders WHERE username = :username");
$orderstmt->execute( array(':username' => $_SESSION['username']) );
...
while ($row = $orderstmt->fetch()) {
/* use the row's data */
}
$orderstmt->closeCursor();
Других решений пока нет …