Php 使用$\u请求而不是$\u POST检索数组

Php 使用$\u请求而不是$\u POST检索数组,php,arrays,post,Php,Arrays,Post,我已经被$\u POST-相关的问题蒙蔽了几天,仍然没有解决我的问题(当然,似乎很多人对$\u POST有问题),但是,用一些新的信息跟进我的问题(): 所以。。。我有一个表单(input.php),大约有十几个字段,$\u POST没有问题(to process.php),但是在这个表单中有一个行项目表,用户可以根据需要动态地向其中添加行(标记是一个表行,硬编码;使用jQuery添加行) 因此,虽然所有其他输入的值都是$\u POSTing,但此表中的值不是。如果在我的流程页面中,我将表值的$

我已经被
$\u POST
-相关的问题蒙蔽了几天,仍然没有解决我的问题(当然,似乎很多人对
$\u POST
有问题),但是,用一些新的信息跟进我的问题():

所以。。。我有一个表单(input.php),大约有十几个字段,
$\u POST
没有问题(to process.php),但是在这个表单中有一个行项目表,用户可以根据需要动态地向其中添加行(标记是一个表行,硬编码;使用jQuery添加行)

因此,虽然所有其他输入的值都是
$\u POST
ing,但此表中的值不是。如果在我的流程页面中,我将表值的
$\u POST
替换为
$\u REQUEST
,则会检索它们,即:

表单页面的相关摘录

<form id="invoiceData" name="invoiceData" method="POST" action="/html/process.php">
    <!-- SNIP (invNum input, etc.) -->
    <td class="date"><input type="text" class="datepicker" name="date[]" value="" /></td>
    <td class="hours"><input type="text" class="hours" name="hours[]" value="" /></td>
    <td class="rate"><input type="text" class="rate" name="rate[]" value="" /></td>
    <td class="date-total"><input type="text" class="date-total" name="dateTotal[]" value="" /></td>
    <td class="add-delete-row">
        <a href="#" class="delete-row" title="Delete row">Delete</a>
        <a href="#" class="add-row" title="Add a row">Add Row</a>
    </td>
<?php
    if (isset($_POST['submit'])) {

        // GET $_POST VALUES FROM input.php
        $invNum = $_POST['invNum'];
        $invDate    = $_POST['invDate'];
        $projNum    = $_POST['projNum'];
        // etc., a bunch more, getting them all ...

        // ... but these, from the dynamic table within the form; $_REQUEST works but not $_POST
        for ($i = 0; $i<count($_REQUEST['date']); $i++) {
            $date = $_REQUEST['date'][$i];
            $hours = $_REQUEST['hours'][$i];
            $rate = $_REQUEST['rate'][$i];
            $dateTotal = $_REQUEST['dateTotal'][$i];

            echo "<div class=\"debug\">
                        <p>" . $i .". " . $date . ", " . $hours . ", " . $rate . ", " . $dateTotal . "</p>
                </div>";
        }
    }
?>

相关摘录自process.php

<form id="invoiceData" name="invoiceData" method="POST" action="/html/process.php">
    <!-- SNIP (invNum input, etc.) -->
    <td class="date"><input type="text" class="datepicker" name="date[]" value="" /></td>
    <td class="hours"><input type="text" class="hours" name="hours[]" value="" /></td>
    <td class="rate"><input type="text" class="rate" name="rate[]" value="" /></td>
    <td class="date-total"><input type="text" class="date-total" name="dateTotal[]" value="" /></td>
    <td class="add-delete-row">
        <a href="#" class="delete-row" title="Delete row">Delete</a>
        <a href="#" class="add-row" title="Add a row">Add Row</a>
    </td>
<?php
    if (isset($_POST['submit'])) {

        // GET $_POST VALUES FROM input.php
        $invNum = $_POST['invNum'];
        $invDate    = $_POST['invDate'];
        $projNum    = $_POST['projNum'];
        // etc., a bunch more, getting them all ...

        // ... but these, from the dynamic table within the form; $_REQUEST works but not $_POST
        for ($i = 0; $i<count($_REQUEST['date']); $i++) {
            $date = $_REQUEST['date'][$i];
            $hours = $_REQUEST['hours'][$i];
            $rate = $_REQUEST['rate'][$i];
            $dateTotal = $_REQUEST['dateTotal'][$i];

            echo "<div class=\"debug\">
                        <p>" . $i .". " . $date . ", " . $hours . ", " . $rate . ", " . $dateTotal . "</p>
                </div>";
        }
    }
?>

。。。返回:

  • 2014-02-231100.00,100.00
  • 2014-02-242100.00200.00
  • 2014-02-253100.00300.00
  • 那么,为什么
    $\u REQUEST
    检索这些值而不是
    $\u POST
    ?无论如何,是否有任何理由不使用
    $\u请求向前移动(例如,安全)?我追求的最终是完成这类任务的最佳实践,我愿意接受建议(尤其是解决本周的困惑)。我知道我有很多关于php数组的作业要做


    提前非常感谢

    不久前,我发现了这一点,并理解这是一种在全球范围内排除sql注入的策略:

    // prevent SQL Injection in $_POST variables:
    foreach ($_POST as $key => $value)  {
        $_POST[$key] = mysql_real_escape_string($value);
    }
    
    它似乎还干扰了$u POST数组,所以它必须退出。我现在将阅读有关sql注入预防的内容,但在此期间,如果有人能建议对此进行修改,使其不会破坏我的阵列,请加入

    谢谢大家

    它似乎还干扰了$u POST数组,所以它必须退出。我会的 现在正在阅读sql注入预防,但在此期间,如果 任何人都可以建议对此进行修改,这样就不会破坏我的计划 阵列,请插话

    谢谢大家

    在使用mysql\u escape\u字符串之前,您可以尝试检查$\u POST是否为数组:

        // prevent SQL Injection in $_POST variables:
        foreach ($_POST as $key => $value)  {
          if(!is_array($_POST[$key])){        
            $_POST[$key] = mysql_real_escape_string($value);
          }
        }
    

    $\u请求
    包含
    $\u POST
    $\u GET
    中的所有内容。什么是
    var\u转储($\u POST,$\u GET)显示?
    $\u请求
    包含
    $\u POST
    $\u GET
    $\u COOKIE
    中的所有内容。我认为我从未成功地将$\u POST与数组一起使用过。我通常会创建一个由管道(|)字符或字符串分隔的字符串semicolons@Barmar变量转储($\u POST,$\u GET);返回表单中的所有值,但表中的值除外,例如,[date”]=>NULL[“hours”]=>NULL[“rate”]=>NULL[“dateTotal”]=>NULL@SyntaxLAMP你能为一个php新手扩展一下吗?(请用代码示例?)