Невозможно выбрать все результаты из таблицы в зависимости от другой таблицы (реляционной БД) в PHP и MySQL

Я пытаюсь закончить этот сайт, который я сейчас создаю, но я застрял.

Я хочу создать таблицу под названием «заказы» в моей БД. Я хочу, чтобы эта таблица была связана с моей таблицей пользователей, чтобы, когда пользователь переходит на свою страницу orders.php (после входа в систему), он видит все свои текущие и предыдущие заказы.

Это будут мои поля таблицы / столбцы:

Я бы
имя пользователя
порядковый номер
описание
количество
Всего

Это мой подход:

Каждый раз, когда создается новый заказ, вставьте все поля таблицы / столбцы в зависимости от выбора пользователя (выбранный материал для заказа), но имя пользователя будет единственным значением, полученным из переменной $ _SESSION или $ _COOKIE, которая содержит имя пользователя. Затем, как только пользователь зайдет в orders.php, я выполню запрос, чтобы показать все заказы, которые заказал только это имя пользователя. Обратите внимание, что я очищаю все свои данные ввода / вывода и не храню конфиденциальные данные в моих файлах cookie. Моя система спроектирована так, что она использует только сеанс в качестве метода аутентификации, поэтому вам нужно входить в систему каждый раз, когда вы закрываете браузер, но это нормально.

1) Это безопасный подход? Есть ли у вас какие-либо предложения / комментарии?

2) Не могли бы вы помочь мне построить запрос?

Я действительно не работал с реляционными базами данных, поэтому я немного растерялся. Как я могу назвать все заказы из таблицы «orders», где username = «username from session»?

Пока у меня есть это:

"SELECT * FROM orders WHERE username = ? " //(Using PDO)

Я знаю, что это сработает, но моя проблема в том, чтобы в случае захвата сеанса или чего-то в этом роде, пользователь мог бы получать заказы любых пользователей, или нет?

Спасибо, что объяснили это немного дальше и помогли мне!

Ура!

1

Решение

Быть осторожен! Пожалуйста, не создавайте простой текстовый файл 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();
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]