$ _POST []产生未定义的索引:

时间:2012-05-14 02:42:35

标签: php forms post input

function checkInputs()
{
    $fname = $_POST["fname"];
    $lname = $_POST['lname'];
    $email = $_POST['email'];
        ...
}
<form method = 'POST' action = 'index.php'>
    First Name:<input type = 'text' name = 'fname'>
    Last Name:<input type = 'text'name = 'lname'>
    Email:<input type = 'text' name = 'email'>
</form>

在单击按钮之前不会调用该函数。

无论我在页面加载后尝试放置php标记,无论它是否仍然产生错误'Undefined index:... at Line

2 个答案:

答案 0 :(得分:1)

在尝试使用该值之前,您需要先检查该值是否存在

如果有人将fname字段留空并提交了您的表单,那么它将不会在$ _POST var中设置

$fname = isset($_POST["fname"]) ? $_POST["fname"] : NULL;

if ($fname == NULL) {
   echo "First name is required";
}

答案 1 :(得分:0)

如果您没有在适当的方法检查中包装该代码,则无论表单是否已提交,每次加载页面时都会运行该代码,例如。

<?
function checkInputs() { blah blah blah }

checkInputs();
?>

<form ...>
...
</form>
当表单在提交时加载 AND 时,

将执行checkInput函数。当表单首次通过get加载时,$ _POST将为空(因为页面是通过GET调用请求的),并且您将获得这些错误。

但如果你有:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    checkInputs();
}

然后只有在通过POST请求调用脚本时才会运行检查功能。