1

このPHPコードがHTMLコンタクトフォームの入力を検証するために機能するかどうか、誰か助けてもらえないかと思っていました. チュートリアルに従ってこの PHP 検証を作成しましたが、うまくいくかどうかはわかりません。私はまだそれをテストするためのウェブホストを持っていませんが、誰かがサーバーを持っているなら、誰かが私に好意を持ってくれ、メールを送受信できるならコードを試してくれると本当にありがたいです. ありがとうございました!!クライアント側でフォームを検証するために jQuery Validation Plugin を使用しています。これはチュートリアルhttp://www.youtube.com/watch?v=rdsz9Ie6h7I
HTML フォームです。

<form action="contact.php" method="post">
<label for="yourname">Your Name:</label>
<input type="text" name="YourName"/>

<label for="youremail">Your Email:</label>
<input type="text" name="YourEmail" />

<label for="yourmessage">Your Message:</label>
<textarea  name="YourMessage"></textarea>

<fieldset>
<input type="submit" id="submit" value="Send"/>
<input type="reset" id="reset" value="Reset"/>
</fieldset>

PHP Code:

<?php

/* Subject and Email Variables */

 $emailSubject = 'Email from site visitor';
 $webMaster = 'YourEmail@mail.com';

/* Getting Form Data Variables */

    $nameField = $_POST['YourName'];
    $emailField = $_POST['YourEmail'];
    $messageField = $_POST['YourMessage'];

    $body = <<<EOD
<br><hr><br>
Name: $YourName <br>
Email: $YourEmail <br>
Message: $YourMessage <br>

EOD;

    $headers = "From: $YourEmail\r\n";  
    $headers .= "Content-type: text/html\r\n";

    $success = mail($webMaster, $emailSubject, $body, $headers);

    $theResults = <<<EOD
<html>
<head>
</head>
<body>
<p style="font-size:12px;font-family:Tahoma,Verdana;">Thanks for your Message.</p>
</body>
</html>

EOD;

echo "$theResults";

?>
4

2 に答える 2

0

現在 Web サーバーを持っていない場合は、ローカル サーバーをインストールしてそこでテストできます。完全無料。

http://www.apachefriends.org/en/xampp-windows.html#641

/* Getting Form Data Variables */

    $nameField = $_POST['YourName'];
    $emailField = $_POST['YourEmail'];
    $messageField = $_POST['YourMessage'];

    $body = <<<EOD
<br><hr><br>
Name: $nameField<br>
Email: $emailField <br>
Message: $messageField <br>
于 2013-04-22T11:14:32.300 に答える
0

問題数が多い

  1. PHP側ではまったく検証していません。以下に、成功または失敗メッセージの検証と条件付きレンダリングを追加しました
  2. 取得した変数名を使用していない (代わりに $YourEmail を使用している) - 投稿名
  3. フォームのラベルが入力名と一致しません
  4. フォーム要素が閉じられておらず、フィールドがすべてフィールドセットにあるわけではなく、フィールドセットに凡例がありません。
  5. 失敗した場合に備えて、フォームに値の事前入力を追加したので、送信に失敗したときに空白のフォームに戻ることはありません。
  6. そのために、PHP の後にフォームを最後に置きます。

コード:

(注:これはすべてファイルに入れられますcontact.php

<?php

if (isset($_POST['submit'])) {

    /* Getting Form Data Variables */

    $nameField = isset($_POST['YourName']) ? $_POST['YourName'] : null;
    $emailField = isset($_POST['YourEmail']) ? $_POST['YourEmail'] : null;
    $messageField = isset($_POST['YourMessage']) ? $_POST['YourMessage'] : null;

    // Validate
    $failures = array();
    if (strlen($nameField)) $failures[] = "Name is required";
    if (strlen($emailField)) $failures[] = "Email is required";
    if (filter_var($email,FILTER_VALIDATE_EMAIL) === false) $failures[] = "Email is invalid";
    if (strlen($messageField)) $failures[] = "Message is required";

    // If validation errors, render them
    if (count($failures)) {
        echo "<p><b>Failed to submit: " . implode(", ", $failures) . "</b></p>";
    } else {
        /* Subject and Email Variables */
        $emailSubject = 'Email from site visitor';
        $webMaster = 'YourEmail@mail.com';

        $body = <<<EOD
            <br><hr><br>
            Name: {$nameField} <br>
            Email: {$emailField} <br>
            Message: {$messageField} <br>
        EOD;


        $headers = "From: {$emailField}\r\n";  
        $headers .= "Content-type: text/html\r\n";
        $success = mail($webMaster, $emailSubject, $body, $headers);

        $theResults = <<<EOD
            <p>Thanks for your Message.</p>
EOD;

        echo "$theResults";
    }
}

?>

<form action="contact.php" method="post">
    <fieldset>
        <legend>Contact Us</legend>
        <label for="YourName">Your Name:</label>
        <input type="text" name="YourName" value="<?=$nameField?>" />

        <label for="YourEmail">Your Email:</label>
        <input type="text" name="YourEmail" value="<?=$emailField?>" />

        <label for="YourMessage">Your Message:</label>
        <textarea  name="YourMessage"><?=$messageField?></textarea>

        <input type="submit" id="submit" value="Send"/>
        <input type="reset" id="reset" value="Reset"/>
    </fieldset>
</form>
于 2013-04-22T11:21:52.250 に答える