有没有更好的方法来使用帖子数据而不是手动定义变量?
我当前的方法
<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>
我不确定您需要以什么方式使用它,但 $_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() 可能是对你有用。