如何调试以下代码中的未定义索引错误


how do I debug Undefined index error in the below code?

我正试图从文本框中获取文本并通过POST方法打印,但在第14行中出现错误Undefined index:name

<html>
    <head>
        <title>Form with PHP </title>
    </head>
    <body>
        <form method = "post">
            <input type ="text" name="name">
            <input type="button" value="submit" id="submit">
        </form>
<?php
    $name=$_POST["name"];
    echo "my name is" .$name;

?>
</body>
</html>

您需要在表单的input/name元素上使用条件语句isset(),因为您在同一页中运行整个代码。

通知显示在初始页面加载时;这就是为什么,因为它还没有"设定"。

此处:

if(isset($_POST['name'])){
    $name=$_POST["name"];
    echo "my name is" .$name;
}

或者将HTML表单和PHP分离为单独的页面,并将您的操作设置为action="handler.php"。然而,使用条件isset()最好是以任何一种方式使用。

您可能还想将提交按钮更改为提交类型:

<input type="submit" value="submit" id="submit">

然而,根据您提交按钮类型的外观;看起来你可能将JS与你发布的代码结合使用,但没有将其包含在你的问题中,因此你也应该发布它,并/或确保你已经正确地设置了它的属性。

如果加载页面(不提交表单),那么$_POST['name']将不存在,因此它会给出"未定义索引"错误消息。在使用之前,您需要确保它存在。

if (isset($_POST['name'])) {
    $name=$_POST["name"];
    echo "my name is" .$name;
}

您使用的是$name而不是$_POST["name"]。正确的方法是:

if(!empty($_POST['name']))
    echo "my name is" .$_POST["name"];