注意:未定义索引 $_POST 方法

Notice: Undefined index $_POST method

提问人:mohammad erfan 提问时间:6/9/2020 更新时间:6/9/2020 访问量:1716

问:

我有一个php简单的项目。 该项目是创建一个电子邮件提交页面。 我使用phpstorm软件。

        <?php
        //get user input
        $name = $_POST["name"];
        $email = $_POST["email"];
        $message = $_POST["message"];
        //error message
        $missingName = '<p><strong>Please enter your name</strong></p>';
        $missingEmail = '<p><strong>Please enter your email address</strong></p>';
        $invalidEmail = '<p><strong>Please enter a valid email address</strong></p>';
        $missingMessage = '<p><strong>Please enter a message</strong></p>';
        //if the user has submitted the form
        if ($_POST["submit"]){
            //check for errors
            if (!$name){
                $errors .= $missingName;
            }else{
                filter_var($name, FILTER_SANITIZE_STRING);
            }
            if (!$email){
                $errors .= $missingEmail;
            }else{
                filter_var($email, FILTER_SANITIZE_EMAIL);
                if (!filter_var($invalidEmail, FILTER_VALIDATE_EMAIL)){
                    $errors .= $invalidEmail;
                }
            }
            if (!$message){
                $errors .= $missingMessage;
            }else{
                $message = filter_var($message, FILTER_SANITIZE_STRING);
            }
            //if there are any errors
            if ($errors){
                $resultMessage = '<div class="alert alert-danger">' . $errors . '</div>';
            }

        }
        ?>
        <form action="index.php" method="post">
            <div class="form-group">
                <label for="name">Name:</label>
                <input type="text" name="name" placeholder="Name" id="name" class="form-control">
            </div>
            <div class="form-group">
                <label for="email">Email:</label>
                <input type="text" name="email" placeholder="Email" id="email" class="form-control">
            </div>
            <div class="form-group">
                <label for="message">Message:</label>
                <textarea name="message" id="message" class="form-control" rows="5"></textarea>
            </div>
            <input type="submit" name="submit" id="submit" class="btn btn-success btn-lg" value="Send Message">
        </form>

当我运行项目时,我遇到了您在图像中看到的错误

错误消息

错误来自以下行

$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];

而这条线

if ($_POST["submit"])

请帮忙!

PHP 通知 undefined-index undefined-variable

评论

0赞 droopsnoot 6/9/2020
只有当表单已提交时,您才需要运行表单处理代码,无论如何您都在运行它。将表单处理代码括在子句中。或者将处理代码放在单独的文件中,并在表单参数中引用它。if ($_SERVER['REQUEST_METHOD'] == "POST")action
1赞 CBroe 6/9/2020
这回答了你的问题吗?使用 PHP 的 “Notice: Undefined variable”, “Notice: Undefined index” 和 “Notice: Undefined offset”

答:

1赞 RainDev 6/9/2020 #1

在访问 POST 变量之前,您应该检查它是否不为空:

if(isset($_POST['submit']){
   //your code
}

评论

0赞 RainDev 6/9/2020
否,只有需要访问 POST 变量的部分
0赞 mohammad erfan 6/9/2020
以前的错误已修复,但是当我单击提交时,它给出了一个新错误: 注意:未定义的变量 此行有错误 => $errors .= $missingName;
0赞 mohammad erfan 6/9/2020
我真的不知道唯一的错误是什么:注意:未定义的变量:第 29 行 E:\Programing\Test\PHP\index.php 中的错误