Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Метод POST
Форумы портала PHP.SU » » Вопросы новичков » Метод POST

Страниц (1): [1]
 

1. Nizz - 30 Декабря, 2016 - 09:12:00 - перейти к сообщению
Всем доброго времени суток и с наступающим Новым Годом Улыбка
Ребзи надеюсь поможете в решении делемы, над которой бьюсь уже довольно долго, суть в следующем: делаю интернет корзину для магазина. Хочу передавать параметры о товаре в обработчик методом POST, используя скрытые поля. Но по какой-то причине переменные не передаются в него.
PHP:
скопировать код в буфер обмена
  1.  
  2. function BUY () {
  3.   if ($_SESSION['USER_GROUP'] == 3) {
  4.     $ter = '<form method="POST" action="/buy/boiler" enctype="multipart/form-data">
  5.            <input type="submit" name="buy" value="Купить">
  6.            <input type="hidden" name="id" value="'.$Row['id'].'">///Переменная содержащая id о товаре не передается
  7.            <input type="hidden" name="name" value="'.$_SESSION['module'].'">/// тут данные передаются тк. занес ее в сессию.
  8.            <input type="hidden" name="price" value="'.$Row['price'].'">//// переменная содержащая цену товара
  9.            </form>';
  10.   }
  11.   return $ter;
  12. }
  13.  

Или такое и не должно работать, а передать можно только методом GET ?
2. Sail - 30 Декабря, 2016 - 10:08:29 - перейти к сообщению
Nizz, или не хватает global $Row;, или параметра в функцию, или забыли session_start, или..., или.., или.
3. Nizz - 30 Декабря, 2016 - 10:24:40 - перейти к сообщению
С Global не получилось. session_start есть, тк сессия успешно передается
А если судить о корректности данного метода ? Или таким образом не стоит делать ?
4. Мелкий - 30 Декабря, 2016 - 10:45:17 - перейти к сообщению
Nizz пишет:
Но по какой-то причине переменные не передаются в него.

А по какой причине должны передаваться?
E_NOTICE как E_NOTICE, undefined variable как undefined variable. Если вы не хотите слушать подсказки языка - то чем вам помогут подсказки людей?
5. Nizz - 30 Декабря, 2016 - 10:50:44 - перейти к сообщению
Мелкий подскажите пожалуйста как сделать ?
6. Мелкий - 30 Декабря, 2016 - 11:16:07 - перейти к сообщению
Переставить error_reporting в адекватный E_ALL в окружении разработки.
Заодно проверить display_errors, в dev-окружении обязан быть on.

Затем начать изучение программирования ещё раз сначала. В частности внимательно прочитать раздел про области видимости переменных.

Концептуально:
- действие пользователя, изменяющее состояние системы (оформление заказа и прочие действия с покупками как хороший пример) - через GET выполняться никогда не должны. Только методы, предписанные стандартом как изменяющие состояние: post, put, patch, delete. POST как наиболее часто используемый не в API.
- передача цены параметром - плохая идея. Использовать можно, если единственное применение этого параметра - вытянуть актуальную цену из постоянного хранилища, сравнить с пришедшим параметром и выдать пользователю сообщение "вы знаете, цена на этот товар поменялась. Теперь она X". Ни к воем случае нельзя использовать параметр как реальную стоимость товара.
- multipart форма - а зачем? Файл передавать не надо.
- что есть в этом коде магическая циферка 3? Не используйте непонятные циферки в коде. Используйте именованные константы.
7. Nizz - 30 Декабря, 2016 - 13:00:58 - перейти к сообщению
Мелкий Огромное спасибо за ценные советы, буду переписывать учитывая ваши комментарии.

 

Powered by ExBB FM 1.0 RC1