0

この質問が多く寄せられていることは知っていますが、解決策がどれもうまくいきません!

最初に下の編集を読んでください!

私は比較的 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 と同じファイルに入れました (また、issetif ステートメントで囲みました...運が悪いです。

ああ、メールはまだ送信されています...送信するだけです:

差出人: () | メッセージ:

編集: 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";と、うまくいきました!しかし、私は理由のためにそこにそれらを持っていました. 代替手段はありますか?今求められているのはこれだと思います...

4

2 に答える 2

4

すべての変数 name、email、message に値があるかどうかを確認する必要があります。次に例を示します。

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>
于 2013-08-24T06:27:31.750 に答える
0

ボタンをチェックして、name 属性があることを確認します。

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

<?php
if (isset($_POST['yourname'])) {
    /*do some codes here*/
} else {
    /**/
}
?>
于 2015-10-01T10:28:54.303 に答える