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

时间:2015-02-25 14:49:41

标签: php

我只是试图从文本框中获取文本并通过POST方法打印但我收到错误未定义索引:第14行中的名称

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

3 个答案:

答案 0 :(得分:5)

您需要在表单的输入/名称元素上使用条件语句isset(),因为您在同一页面内运行了整个代码。

通知显示在初始页面加载上;这就是为什么,因为它还没有设置&#34;爱好。

下面:

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和你发布的代码并没有在你的问题中包含它,因此你也应该发布它并/或确保你已经正确设置了它的属性。

答案 1 :(得分:0)

如果您加载页面(不提交表单),则$ _POST [&#39; name&#39;]将不存在,因此它会提供&#34;未定义的索引&#34;错误信息。在使用之前,您需要确保它存在。

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

答案 2 :(得分:0)

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

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