表单发布由于操作而没有发布隐藏字段?

时间:2019-05-28 21:13:25

标签: php html forms

我的格式如下:

<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 个答案:

答案 0 :(得分:1)

您提供的代码示例存在三个问题:

  1. 变量$HTTP_POST_VARS不是superglobal,因此要使用它,您需要使用global关键字对其进行声明。
  2. 此外,$HTTP_POST_VARS也已弃用,您应该使用$_POST变量insetead。 $_POST是超全局性的,因此您不需要使用global关键字。
  3. 在上一个代码示例中,您使用了$_GET变量,但是您创建的表单被声明为POST

要使代码正常工作,您需要将所有$HTTP_POST_VARS$_GET变量替换为$_POST