Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-调用$u POST数据的更好方法?_Php_Html_Forms_Post - Fatal编程技术网

PHP-调用$u POST数据的更好方法?

PHP-调用$u POST数据的更好方法?,php,html,forms,post,Php,Html,Forms,Post,有没有更好的方法使用post数据而不是手动定义变量 我当前的方法 <form method="POST" action="form.php"> <input type="text" name="name" id="name" /> <input type="submit" value="Submit"> </form> <?php $name = $_POST['name']; function e

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

我当前的方法

<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);

?>

现在我知道你可以这样做,但这只是一个例子:


是否有更好的方法使用
$\u POST['value']
,而不必每次都将POST数据定义为变量

请注意,我已经看过这里了:已经看过了

谢谢

是的,您可以使用

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'];
但是,更好的方法是

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"; 

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

echo "This is my new " . $_POST['name'];
然而,检查空性(或一般验证)是一个好主意。例如,在以下情况下,如果变量为空,我将指定一个默认值:

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

$\u POST['value']
已经是一个变量,因此您不必将其存储在变量中。同样,通常的做法是在操作变量之前将其存储在变量中


另外,
$\u POST
是一个数组。这就是为什么您需要指定密钥,在您的情况下,
['value']
是您的密钥。现在,如果希望看到它包含的其他值,您还可以回显整个
$\u POST
,但是回显在数组上不起作用,因此您需要使用
打印($\u POST)
$\u POST['value']
已经是一个变量,因此您不必将其存储在变量中。同样,通常的做法是在操作变量之前将其存储在变量中


另外,
$\u POST
是一个数组。这就是为什么您需要指定密钥,在您的情况下,
['value']
是您的密钥。现在,如果希望看到它包含的其他值,您还可以回显整个
$\u POST
,但是回显在数组上不起作用,因此您需要使用
打印($\u POST)

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

foreach ($_POST as $item) {
  print_r($item);
}

我不确定您需要它的方式,但$\u POST是普通数组可能很重要,这样您就可以使用foreach函数了

foreach ($_POST as $item) {
  print_r($item);
}

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

  • foreach($\发布为$key=>$value)$body.=$key.'->'。 美元价值。”
    '

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

    $postdata=文件\u获取\u内容(“php://input");

  • 您可以使用$\u REQUEST和$\u POST来访问POST、Get和Cookie数据等所有内容

  • 您也可以简单地使用$input\u data=$\u POST extract()命令 对你有用


获取post数据的方法有很多,但在某些情况下这取决于要求

  • foreach($\发布为$key=>$value)$body.=$key.'->'。 美元价值。”
    '

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

    $postdata=文件\u获取\u内容(“php://input");

  • 您可以使用$\u REQUEST和$\u POST来访问POST、Get和Cookie数据等所有内容

  • 您也可以简单地使用$input\u data=$\u POST extract()命令 对你有用


如果您不想出于安全目的使用
extract()
(即使您可以简单地跳过已经存在的变量),那么您可以简单地在数组中循环-检查
$\u 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
?>

如果您不想出于安全目的使用
extract()
(即使您可以简单地跳过已经存在的变量),那么您可以简单地在数组中循环-检查
$\u 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
?>

有一个名为extract()的函数,它可以将$\u POST中的所有命名索引转换为单个变量,并带有可选前缀以避免命名冲突@FreemanLambda该页面有一条警告,禁止使用不受信任的数据…@AaronHatton如果不覆盖变量,则不会发生任何事情。如果你想使用
$\u POST[anything]
那么你显然也会冒这个风险?通常不鼓励在你的代码中显式使用超全局。如果出于任何原因,您想将文本输入重命名为
lastname
,则需要编辑对
$\u POST['name']
的任何引用。如果将其分配给具有适当作用域的变量,则更容易。有一个名为extract()的函数可以将$\u POST中的所有命名索引转换为单个变量,并带有可选前缀以避免命名冲突@FreemanLambda该页面有一条警告,禁止使用不受信任的数据…@AaronHatton如果不覆盖变量,则不会发生任何事情。如果你想使用
$\u POST[anything]
那么你显然也会冒这个风险?通常不鼓励在你的代码中显式使用超全局。如果出于任何原因,您想将文本输入重命名为
lastname
,则需要编辑对
$\u POST['name']
的任何引用。如果将其分配给具有适当范围的变量,则更容易。请改用
isset
<如果值为
0
,则code>empty
将选择默认值,这很可能不是OP想要的值。请改用
isset
<如果值为
0
,则code>empty
将选择默认值,这很可能不是OP想要的。这种方式看起来更复杂,但是我想它会通过过滤数组使注入检查更快?@AaronHatton
extract
基本上是这样一个函数,它根据键创建变量。唯一不同的是他