PHP - 调用 $_POST 数据的更好方法


PHP - A Better way to call $_POST Data?

有没有更好的方法来使用帖子数据而不是手动定义变量?

我当前的方法

<form method="POST" action="form.php">
    <input type="text" name="name" id="name" />
    <input type="submit" value="Submit">
</form>
<?php
    $name = $_POST['name'];
    function echoname ($name) {
        echo $name;
    };
    echo "This is my new" . echoname ($name);
?>

现在我知道你可以这样为我的例子,但它只是一个例子

<?php
    $name = $_POST['name']
        echo "This is my new" . $name;
?>

有没有更好的方法来使用$_POST['value']而不必每次都将发布数据定义为变量?

请注意,我已经看过这里: PHP 手册 $_POST 已经

谢谢!

如果您不想出于安全目的使用 extract()(即使您可以简单地跳过已经存在的变量),那么您可以简单地遍历数组 - 检查 $_POST 值是否存在,如果存在,请创建键的变量:

<?php
    $postVariablesToExtract = array("name", "password", "email");
    foreach ($postVariablesToExtract as $postVariableToExtract) {
        if (isset($_POST[$postVariableToExtract])) {
            $$postVariableToExtract = $_POST[$postVariableToExtract];
        } else {
            $$postVariableToExtract = null;
        }
    }
    var_dump($name); //null - as we don't have any POST values
    var_dump($password); //null - as we don't have any POST values
    var_dump($email); //null - as we don't have any POST values
?>

是的,您可以使用

echo "This is my new" . $_POST['name'];

但是,更好的方法是

if(isset($_POST['name'])) // check if this data is exsit
    echo "This is my new" . $_POST['name'];

当然,您可以直接使用该变量,即:

echo "This is my new " . $_POST['name'];

但是,最好检查空性(或一般验证)。例如,在下面的情况下,如果变量为空,我分配一个默认值:

$name = empty($_POST['name']) ? 'John' : $_POST['name'];
echo "This is my new $name"; 

$_POST['value']已经是一个变量,所以你不必将其存储在变量中。再说一次,在操作变量之前将其存储在变量中的常见做法。

此外,$_POST是一个数组。这就是为什么您需要指定密钥,在您的情况下['value']是您的密钥。现在,如果您想查看它包含的其他值,您也可以回显整个$_POST,但是 echo 不适用于数组,因此您需要使用 print_r($_POST); <</p>

div class="answers">

我不确定您需要以什么方式使用它,但 $_POST 是普通数组可能很重要,因此您可以使用 foreach 函数。

foreach ($_POST as $item) {
  print_r($item);
}
有很多

方法可以获取帖子数据,但在某些情况下这取决于要求。

  • foreach ($_POST 作为 $key => $value) $body .= $key .' -> ' .$value .''
    ;

  • 如果发布的数据没有键,只有值,请使用原始发布数据:

    $postdata = file_get_contents("php://input");

  • 您可以使用 _REQUEST 美元和 _POST 美元来访问所有内容,例如发布、获取和 Cookie 数据。

  • 你也可以简单地使用 $input_data = $_POST extract() 可能是对你有用。