【问题标题】:How to safely pass value from WP Forms to PHP code?如何安全地将值从 WP Forms 传递到 PHP 代码?
【发布时间】:2021-05-30 10:50:28
【问题描述】:

我正在使用 Wordpress 表单(重力表单插件),我正在尝试将价格价值传递给支付平台。我只使用了一个带有代码的钩子,在表单提交后将值传递给 URL 并重定向到支付页面:

add_action('gform_after_submission', 'link_to_payment', 10, 2);
function link_to_payment($entry, $form) {

    $price =  $entry['6.2'];
    header("Location: http://www.******.***/test.php?price='.$price");
    exit();

}

很明显,这个问题只是任何使用 webtools 的人都可以在 html 代码中更改 $entry['6.2'] 的值并获得不同的价格。我的问题是,是否有一种安全的方法可以将值从 HTML 页面传递到用户无法在 HTML 代码中更改的 PHP 代码?

【问题讨论】:

  • 6.2字段的值是从哪里设置的?是隐藏字段吗?
  • 不是隐藏字段。这是管理员预先设定的显示给用户的价格。

标签: php wordpress


【解决方案1】:

由于这些是从后端设置的产品价格,因此您无需从前端获取价格。

创建一个具有产品 ID 的新隐藏字段。假设字段的name6.3

add_action('gform_after_submission', 'bks_link_to_payment', 10, 2);
function bks_link_to_payment($entry, $form) {

    $product_id = $entry['6.3']; // Make sure you change the field to the one you create.
    $product    = wc_get_product( $product_id ); // get product object from the backend.

    // If the product exists.
    if ( $product ) {
        $price = $product->get_price(); // This would give you the price of the product.
        header("Location: http://www.******.***/test.php?price='.$price");
        exit();
    }
}

因此,如果有人使用 webtools 更改产品的 ID,您要确保产品存在并且价格是从数据库中获取的,因此无法更改。

【讨论】:

  • 呵呵,自己不去想这个就觉得很傻。非常感谢,这会做! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-05
  • 1970-01-01
  • 1970-01-01
  • 2015-11-05
  • 1970-01-01
  • 1970-01-01
  • 2011-06-21
相关资源
最近更新 更多