将PHP $ _POST变量数组存储为数组

时间:2015-02-19 15:50:24

标签: php arrays wordpress forms woocommerce

我正在开发一个WordPress进程,但这似乎更像是与WordPress特定相关的一般PHP和数组操作问题,在这种情况下与WooCommerce有关。

如果我的表格可以提交1到35个相同类型的条目,那么根据我的理解,我可以按如下方式创建。我正在使用名字和姓氏。

表单输入,简化,如下所示:

echo '  <input type="text" name="first_name[]" id="first_name" />';
echo '  <input type="text" name="last_name[]" id="last_name" />';

在上面的完整版本中,线条会根据需要复制很多时间,迭代变量会相互区分ID,并预先填充和隐藏其他值。有一个并行版本意味着将变量作为隐藏字段发布。

后期行动如下:

if (isset($_POST) == true) {
    $att_data = array(
        'last_name'         => $_POST['last_name'],
        'first_name'        => $_POST['first_name']
    );

然后WordPress函数add_post_meta应该将$ att_data添加到数据库中。它可以作为没有表单的直接“添加”操作,或者使用虚拟变量代替$ _POST [...]。不幸的是,在我的调试控制台上使用表单/ submit / $ _ POST的版本是什么

["last_name"]=> NULL ["first_name"]=> NULL 

因此,表单正在提交或至少发布了帖子操作并且正在发送数组,但是没有捕获$ _POST变量。为什么不呢?

附加:等一下 - 我想知道WooCommerce在重定向之前是否清除所有$ _POST变量......我现在正在研究。

2 个答案:

答案 0 :(得分:0)

我最近遇到了类似的问题,但没有使用wordpress。我使用了htmlentities()serialize()函数,因此看起来像htmlentities(serialize($array))这对我有用。

希望这有帮助

答案 1 :(得分:0)

我没有回答基本问题,为什么$ _POST在这个特定的上下文中不起作用(WooCommerce checkout Place Order),但我相信我的语法可能正确或接近,因为同样的或者当我用'#34; get&#34; &#34; post&#34;的方法在表单中,将变量更改为$ _GET变量,并将新表单与旧表单分开。此外,也许是指示性的,即使在新的位置,$ _POST也不能以第二种形式工作。只是偶然和绝望,我碰巧发现$ _GET确实有效。

由于安全性在日常工作中并不是真正关注的问题(只需预订已登录用户购买门票的预订名称),并且因为我认为这些请求将低于$ _GET 3000字符限制或者如果有必要的话,后者会有其他的解决方法,我将继续使用$ _GET解决方案,除非我能够发现(或有人告诉我!)Woo Checkout中的问题是什么。这似乎是一个WordPress / WooCommerce问题,而不是像我原先怀疑的那样,是一个PHP问题。

我留下了一项新任务,这将导致我提出一个同样在WordPress / PHP边界上的问题(就像很多时候这个网站一样,至少对我而言),与排序有关输出基于结果数组。我一直看到类似的问题,但尚未遇到这个特定的问题,但这将是另一篇文章的主题,因为我目前还不确定答案是否会更多PHP(数组排序)或WordPress的特异性。如果读这个帖子的人感觉像是在缩短我目前的计划,无论是通过预测我的问题还是指导我找到能够完成这项工作的资源,请成为我的客人。

感谢所有提出建议的人,至少基本上确认表面上没有任何内容是错误的,并且提供了调试建议。