注意:未定义的变量 - 表格处理?

时间:2011-02-20 18:02:05

标签: php

我在下面创建了一个示例表单和代码来说明。我知道我可以在PHP中关闭通知,但宁愿修复问题而不是忽略它。

当我创建表单时,我确实喜欢我在下面发布的内容,显然这只是一个没有清理等的示例。

我知道为什么我会得到通知:未定义的变量,我知道这听起来很愚蠢,但不确定解决它的最简单和最正确的方法。

你们其中一位出色的人能告诉我如何阻止这种通知出现吗?

现在才知道我没有在WAMP中报告所有错误并且我创建了大量的表单,我真的不想做大量的重新编辑代码来修复它,因此我正在寻找一个好的,简单的解决方案,以解决它,所以我可以进入我的所有形式,并一劳永逸地进行排序。

<?php
// check if form has been submitted
if(isset($_POST['submit'])){

    // fetch form data
    $name = $_POST['name']; 
    $username = $_POST['username']; 
    $email = $_POST['email'];

    // check form fields
    if(empty($name)){
        $error .= 'Enter name <br />';
    }
    if(empty($username)){
        $error .= 'Enter username <br />';
    }
    if(empty($email)){
        $error .= 'Enter email <br />';
    }

    // check if errors exist
    if(isset($error)){
        echo $error;    
    } else {
        // process form as normal   
    }
}
?>

<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">

<label for="name">Name:</label>
<input type="text" name="name" value="<?php if(isset($name)) echo $name; ?>" />

<label for="name">Username:</label>
<input type="text" name="username" value="<?php if(isset($username)) echo $username; ?>" />

<label for="email">Email:</label>
<input type="text" name="email" value="<?php if(isset($email)) echo $email; ?>" />

<input type="submit" name="submit" value="Send" />

</form>

3 个答案:

答案 0 :(得分:2)

你是对的,问题是第一个字符串连接$error .= "something",因为之前不存在$error

轻松修复:使用空字符串初始化$error并使用!empty($error)代替isset($empty)

答案 1 :(得分:1)

也许你可以简化一些事情:

if(isset($_POST['submit'])){

    $error = "";

    if(isset($_POST['name'])){
        $name = $_POST['name'];
    } else {
        $error .= 'Enter name <br />';
    }

    echo $error;
}

为每个var重复一次isset()部分。

答案 2 :(得分:-1)

这段代码可以解决问题:

if (isset($_POST['submit'])) {
    $username=$_POST['name'];
    $password=$_POST['password'];
}