Форма сообщения не публикует скрытое поле из-за действия? - PullRequest
0 голосов
/ 29 мая 2019

У меня есть следующая форма:

<form name="cart_quantity" action="https://www.example.com/product_info.php?action=add_product" method="post" onsubmit="return validate(); ">
<input type="hidden" name="products_id" value="226" />      
<input type="hidden" name="final_sale" value="final_sale" />
</form>

Идентификатор products_id правильно передается на страницу корзины.Однако окончательная продажная стоимость, которую я пытаюсь добавить, не равна.

Функции действия формы:

$goto =  shopping_cart.php;
        $parameters = array('action', 'cPath', 'products_id', 'pid');

case 'add_product' :    if (isset($HTTP_POST_VARS['products_id']) && is_numeric($HTTP_POST_VARS['products_id'])) {
    $attributes = isset($HTTP_POST_VARS['id']) ? $HTTP_POST_VARS['id'] : '';

    $cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $HTTP_POST_VARS['id'])) + $HTTP_POST_VARS['cart_quantity'], $HTTP_POST_VARS['id']);


}
    tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
    break;

Я попытался изменить действие, чтобы включить значение final_sale (которое я не считал необходимым):

case 'add_product' :    if (isset($HTTP_POST_VARS['products_id']) && is_numeric($HTTP_POST_VARS['products_id'])) {
            $attributes = isset($HTTP_POST_VARS['id']) ? $HTTP_POST_VARS['id'] : '';
            $final_sale = isset($HTTP_POST_VARS['final_sale']) ? $HTTP_POST_VARS['final_sale'] : '';
            $cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $HTTP_POST_VARS['id'])) + $HTTP_POST_VARS['cart_quantity'], $HTTP_POST_VARS['id']);


        }
            tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
            break;

Это тоже не сработало.

В shopping_cart.php я просто пытаюсь повторить значение, например, чтобы увидеть, прошло ли оно, но я ничего не получаю:

echo $_GET['final_sale'];

if (tep_not_null( ($_GET['final_sale']) )) {
    echo "finalsale";

}

1 Ответ

1 голос
/ 29 мая 2019

Существует три проблемы с предоставленными вами примерами кода:

  1. Переменная $HTTP_POST_VARS не суперглобальная , поэтому для ее использования необходимо объявить ее с помощью ключевого слова global.
  2. Также $HTTP_POST_VARS является устаревшим, и вы должны использовать переменную $_POST. $_POST является суперглобальным, поэтому вам не нужно использовать ключевое слово global.
  3. В последнем примере кода вы использовали переменную $_GET, но созданная вами форма объявляется как POST.

Чтобы ваш код работал, вам нужно заменить все $HTTP_POST_VARS и $_GET переменные на $_POST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...