$ _POST未定义索引PHP错误

时间:2014-10-13 12:23:50

标签: php html

我的html代码收到字符串:

<!DOCTYPE html>
<head>
    <title>title</title>
</head>
<body>
    <font face="Segoe UI" siz ="3">
    <form action="process.php" action="post">
    Suggestion: <input type="text" name="sgst" autocomplete="off">
    <input type="submit">
</form>
</font>
</body>
</html>

我的PHP处理它:(process.php)

<?php
    if ($_POST["sgst"]=="john") {
        echo "john";
    } else {
        echo "someone";
    }
?>

我收到错误

  

注意:未定义的索引:第2行的C:\ xampp \ htdocs \ test \ process.php中的sgst

有谁能告诉我导致错误的原因是什么?

6 个答案:

答案 0 :(得分:1)

您正在重复使用action元素的form属性:

<form action="process.php" action="post">

我很惊讶这张表格甚至都是张贴的。尽管有这些症状,但似乎至少足以混淆POST。我认为您打算使用method属性:

<form action="process.php" method="post">

其他一些说明:

  • 您需要在服务器端代码中使用isset()。代码不应该假设所有值都将被发布,因为服务器无法控制客户端发送它的内容。最好在使用之前明确验证进来的数据。
  • font元素非常过时,如果它们没有被正式弃用,它们应该是:) CSS样式将成为客户端UI样式的方式。

答案 1 :(得分:1)

使用isset

if(isset($_POST["sgst"]=="john")){

} 

答案 2 :(得分:0)

它显示未定义,因为最初该值未初始化

使用isset()来检查声明的值是否然后它不会显示错误...

试试我已更改

<?PHP 
if (isset($_POST["sgst"])
{
   if ($_POST["sgst"]=="john") {
    echo "john";
   } else {
    echo "someone";
   }
}
?>

答案 3 :(得分:0)

尝试以下

在表单标记中使用方法属性,例如method="post",而不是action="post"

答案 4 :(得分:0)

<!DOCTYPE html>
<head>
    <title>title</title>
</head>
<body>
    <font face="Segoe UI" siz ="3">
    <form action="process.php" method="post">
    Suggestion: <input type="text" name="sgst" autocomplete="off">
    <input type="submit">
</form>
</font>
</body>
</html>    


 if (isset($_POST["sgst"]) && $_POST["sgst"]=="john") {
            echo "john";
        } else {
            echo "someone";
        }

答案 5 :(得分:0)

您缺少方法属性。

使用两种形式 - 删除第一种形式。

试试这个,

<form action="process.php" method="post">

 <?php
        if(!empty($_POST)){
        if ($_POST["sgst"]=="john") {
                echo "john";
            } else {
                echo "someone";
            }
        }
        ?>