【问题标题】:$_POST Returning "Undefined index"$_POST 返回“未定义的索引”
【发布时间】:2013-08-24 06:18:08
【问题描述】:

我知道这个问题被问了很多,但没有一个解决方案适合我!

请先阅读下面的编辑内容!

我对 PHP 比较陌生,我正在创建一个简单的联系表单:

HTML

<form action="contactUsSuccess.php" id="contactForm" method="post" name="contactForm" onsubmit="return validateContactUs();">
    <table>
        <tr>
            <td>
                <input id="name" maxlength="70" name="name" placeholder="Name" type="text">
            </td>
            <td>
                <input id="email" maxlength="255" name="email" placeholder="Email" type="text">
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <textarea id="message" maxlength="5000" name="message" placeholder="Message"></textarea>
            </td>
        </tr>
        <tr>
            <td colspan="2" id="submitArea">
                <input id="submitButton" type="submit" value="Send">
            </td>
        </tr>
    </table>
</form>

PHP,在另一个页面上。

<?php
    $success = false;

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

    $to = "----@gmail.com";
    $subject = "New Contact Message - ----";
    $messageMail = "From: " . $name . "(" . $email . ")" . " | Message: " . $message;
    $header = "From: ----@gmail.com";

    if(mail($to, $subject, $messageMail, $header)) {
        $success = true;
    }
?>

我的错误:

Notice: Undefined index: name in Z:\Documents\Workspace\----\help\contactUsSuccess.php on line 6

Notice: Undefined index: email in Z:\Documents\Workspace\----\help\contactUsSuccess.php on line 7

Notice: Undefined index: message in Z:\Documents\Workspace\----\help\contactUsSuccess.php on line 8

如您所见,我的表单onsubmit 执行JavaScript,它只返回true 或false。如果您出于任何原因认为这可能是这不起作用的原因,请询问。

另外,我尝试了上面显示的相同 PHP 代码,并将其放在与原始 HTML 相同的文件中(并且还用isset if 语句将其包围...不走运。

哦,电子邮件仍然发送......它只是发送:

发件人:() |留言:

编辑:原来是 JavaScript!这是它的主要部分:

if (!(nameLen > 0 && nameLen <= 70 && emailLen > 0 && emailLen <= 255 && messageLen > 0 && messageLen <= 5000)) {
        cont = false;
    } else {
        name.disabled = "true";
        email.disabled = "true";
        message.disabled = "true";
        document.getElementById("submitButton").disabled = "true";
    }

    if (cont) {
        return true;
    } else {
        return false;
    }
}

当我删除 3 --.disabled = "true"; 时,它起作用了!但是,我确实将它们放在那里是有原因的。有替代方案吗?我想这就是我现在要求的......

【问题讨论】:

  • 在提交事件中取出验证功能是否有效? (即 JavaScript)
  • 您需要先检查是否设置了天气后变量
  • 您确定在所有 $_POST 变量中都使用了您所说的 isset 方法吗?
  • 在您的 php 文件中尝试 var_dump($_POST) 以查看是否有任何表单数据被发布到该页面上。有时,由于配置中的某些问题,不会发布表单数据。大约一年前发生在我的一位同事身上。
  • @rink.attendant.6 - 你是对的,但我无法摆脱所有这些。请阅读我的最新编辑。谢谢!

标签: php javascript html forms post


【解决方案1】:

您必须检查所有变量名称,电子邮件,消息是否都有值,例如:

if (isset($_POST['name']) && isset($_POST['email']) && isset($_POST['message']))

如果是,则发送电子邮件。您的错误是说这些变量没有价值。问题甚至可能出在您的 javascript 验证中,因此请尝试将其收起来然后检查。

问题编辑后编辑:

试试这个:

<script>
function validate(form) {
fail = validateName(form.name.value)
fail += validateEmail(form.email.value)
fail += validateMessage(form.message.value)
if (fail == "") return true
  else { alert(fail); return false }
}

function validateName(field) {
if (field == "") return "No Username was entered.\n"
else if (field.length < 5)
    return "Usernames must be at least 5 characters.\n"
else if (field.length > 15)
    return "Usernames must be shorter than 15 characters.\n"
return ""
 </script>

【讨论】:

  • 或者您可以尝试将所有变量分配为空字符串,例如,$name = $email = $message = "" 但如果您发送没有值的表单,它将发送空电子邮件
  • 处理表单数据的页面会在表单提交后被访问,100% 的时间。另外,我已经尝试过isset 的东西......不走运。请阅读我的最新编辑,谢谢!
  • 我更新了我的答案,有一种方法可以验证它......这个功能很简单,只需在表单标签中添加onSubmit="return validate(this)",当你按下提交时它会运行函数 validate(form) ...然后它现在只检查名称的长度,但是您可以以相同的方式发送电子邮件和消息...如果验证没有问题,则返回 true 并且可以验证,如果没有,它将警告错误,希望对您有所帮助
【解决方案2】:

检查您的按钮以确保它具有名称属性:

<input id="submitButton" type="submit" name="yourname" value="Send">

<?php
if (isset($_POST['yourname'])) {
    /*do some codes here*/
} else {
    /**/
}
?>

【讨论】:

    猜你喜欢
    • 2020-01-17
    • 1970-01-01
    • 2018-03-05
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    相关资源
    最近更新 更多