0

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

我目前的方法

<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 Manual $_POST

谢谢!

4

6 回答 6

3

如果您不想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
?>
于 2013-10-03T10:00:59.123 回答
0

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

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

于 2013-10-03T09:55:10.463 回答
0

获取发布数据的方法有很多,但在某些情况下取决于需求。

  • foreach ($_POST as $key => $value) $body .= $key 。'->' 。$价值。'
    ';

  • 如果发布的数据没有键,只有值,使用 Raw Post Data:

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

  • 您可以使用 $_REQUEST 和 $_POST 来访问所有内容,例如 Post、Get 和 Cookie 数据。

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

于 2013-10-03T10:00:58.453 回答
0

是的,您可以使用

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

但是,更好的方法是

if(isset($_POST['name'])) // check if this data is exsit
    echo "This is my new" . $_POST['name'];
于 2013-10-03T09:53:59.887 回答
0

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

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

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

$name = empty($_POST['name']) ? 'John' : $_POST['name'];
echo "This is my new $name"; 
于 2013-10-03T09:54:05.940 回答
0

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

foreach ($_POST as $item) {
  print_r($item);
}
于 2013-10-03T09:56:34.473 回答