【问题标题】:Posting array from form从表单发布数组
【发布时间】:2011-09-03 09:23:51
【问题描述】:

我的页面上有一个包含一堆输入和一些隐藏字段的表单,我被要求通过“发布数组”传递这些数据,但我不确定如何执行此操作,

这是我现在在做什么的sn-p

<form enctype="multipart/form-data" action="process.php" method="POST"> 
...
more inputs
...

<!-- Hidden data -->
<input type="hidden" name="TimeToRenderHoursInput" value="<?php echo $RenderHours; ?>" />
<input type="hidden" name="TimeToRenderDaysInput" value="<?php echo $RenderDays; ?>" />
<input type="hidden" name="TimeToRenderYearsInput" value="<?php echo $RenderYears; ?>" />
<input type="hidden" name="ContentMinutesInput" value="<?php echo $ContentMinutes; ?>" />
<input type="hidden" name="ContentMinutesSelector" value="<?php echo $ContentMinutesSelector; ?>" />
<input type="hidden" name="PriorityInput" value="<?php echo $Priority; ?>" />
<input type="hidden" name="AvgFrameRenderTimeInput" value="<?php echo $AverageFrameRenderTime; ?>" />
<input type="hidden" name="AvgFrameRenderTimeSelector" value="<?php echo $AverageFrameRenderSelector; ?>" />
<input type="hidden" name="CoresInTestInput" value="<?php echo $CoresInTest; ?>" />
<input type="hidden" name="EstPriceInput" value="<?php echo $EstPrice; ?>" />
<!-- End hidden -->

<input type="image" src="http://www.venndigital.co.uk/testsite/renderbutton/_includes/images/button/submit.jpg" alt="Submit" value="Submit" style="border:0!important;" />

在我的 process.php 中,我会这样调用数据...

$first_name = $_POST['first_name']; 
$company_name = $_POST['company_name']; 
$email_from = $_POST['email']; 
$address = $_POST['address']; 
$postcode = $_POST['postcode']; 
$RenderHours = $_POST['TimeToRenderHoursInput'];
$RenderDays = $_POST['TimeToRenderDaysInput'];
$RenderYears = $_POST['TimeToRenderYearsInput'];
$ContentMinutes = $_POST['ContentMinutesInput'];
$ContentMinutesSelector = $_POST['ContentMinutesSelector'];
$Priority = $_POST['PriorityInput'];
$AverageFrameRenderTime = $_POST['AvgFrameRenderTimeInput'];
$AverageFrameRenderSelector = $_POST['AvgFrameRenderTimeSelector'];
$CoresInTest = $_POST['CoresInTestInput'];
$EstPrice = $_POST['EstPriceInput'];

有没有办法将它作为数组发布?无论如何,我的方法是不好的做法吗?

【问题讨论】:

    标签: php html arrays post


    【解决方案1】:

    当您发布该数据时,它会以数组形式存储在$_POST 中。

    您可以选择执行以下操作:

    <input name="arrayname[item1]">
    <input name="arrayname[item2]">
    <input name="arrayname[item3]">
    

    然后:

    $item1 = $_POST['arrayname']['item1'];
    $item2 = $_POST['arrayname']['item2'];
    $item3 = $_POST['arrayname']['item3'];
    

    但我没看明白。

    【讨论】:

    • 我被要求为客户构建一个订单页面,他们希望数据在 POST 数组中传递给他们,因为我不是 php 开发人员,我想知道我上面发布的方式是否足够或者如果它以任何方式皱眉?
    • 您发布的代码没有任何问题。如果在这个数组中只有他们想要的某些隐藏表单元素(而不是表单的其余部分),那么我可以看到需要一个多维数组。这将通过使用上面的代码来完成。但是,是的,您的代码没有问题。
    【解决方案2】:

    给每个输入一个数组格式的名称:

    <input type="hidden" name="data[EstPriceInput]" value="" />
    

    那么 PHP 中的 $_POST['data']; 将是一个数组:

      print_r($_POST);         // print out the whole post
      print_r($_POST['data']); // print out only the data array
    

    【讨论】:

    • 这是一个好习惯吗?我看到这很重要的一件事是,当您想在数据库中插入值而不键入所有字段时,您只需遍历数组?
    【解决方案3】:

    你可以使用内置函数:

    extract($_POST);
    

    它将为$_POST 中的每个条目创建一个变量。

    【讨论】:

      【解决方案4】:

      如果您已经在服务器 (PHP) 端拥有它,为什么还要通过帖子发送它?

      为什么不将数组保存到$_SESSION 变量中,这样您就可以在提交表单时使用它,这可能会使其更加“安全”,因为客户端无法通过编辑源来更改变量。

      这将取决于您真正想要做什么。

      【讨论】:

        【解决方案5】:

        你所做的不一定是坏习惯,但它确实需要大量的打字。我会像这样完成你想要做的事情。

        foreach($_POST as $var => $val){
            $$var = $val;
        }
        

        这将获取所有 POST 变量并将它们放入各自的变量中。 因此,如果您有一个名为 email 的输入字段并且 luser 输入 Someone@example.com,您将有一个名为 $email 的变量,其值为“Someone@example.com”。

        【讨论】:

        • 那是糟糕的设计。真的,真的,真的很糟糕的设计。 1) "var" 可以是用户提交的 2) val 可以是用户提交的。所以有人可以将现有的应用程序变量发送到脚本,这将覆盖它!
        【解决方案6】:

        如果您希望帖子中的所有内容都为 $Variables,您可以使用以下内容:

        foreach($_POST as $key => $value) { eval("$" . $key . " = " . $value"); }

        【讨论】:

        • 安全风险。 (当 $key 等于脚本中已经存在的变量时)
        【解决方案7】:

        事实上,你已经在这样做了。提交表单时,数据通过一个 post 数组 ($_POST) 传递。您的 process.php 正在接收该数组并将其值重新分配为单个变量。

        【讨论】:

        • 它实际上可能是一个数组,但该数组中还有他可能不想筛选的其他数据
        • 啊,那有没有办法打印出一个数组呢?我试过使用 只是它不打印任何东西,我必须使用我上面的代码,如果这有意义吗?
        猜你喜欢
        • 2014-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多