0

私はphpを初めて使用するので、連絡フォームに必須フィールドを追加するためのサポートが必要です。視聴者に必須フィールドに何かを入力するように指示する素敵な「エラー」メッセージを表示したいと思います。

これが私のphpスクリプトです:

<?php
        if(isset($_POST['submit'])){

            $to = "benlevygraphics@gmail.com";
            $headers = "From: " . $_POST['email'];
            $subject = "Ben, you have been contacted...";
            $body = "Name: " . $_POST['name'] . "\nEmail: " . $_POST['email'] . "\nWebsite: " . $_POST['web'] . "\n" . "\nFavorite Piece of work: " . $_POST['favwork'] . "\n" . "\nMessage: " . $_POST['message'];

            if(mail($to, $subject, $body, $headers)){

            echo("<p class=contactformsent>".$_POST['name'].", your information was received. For your records an email has also been sent to you!</p>");

            }
            else{
               echo("<p class=contactformnotsent>".$_POST['name'].", Message delivery failed...</p>");
            }
       }

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

            $to = $_POST['email'];
            $headers = "From: benlevygraphics@gmail.com" ;
            $subject = "You contacted benlevywebdesign";
            $body =  $_POST['name'].",  Thank you for taking a look at my portfolio and contacting me.  I have received your contact information/message and I will get back to you as soon as I can!" . "\n" . "\nFor your records I have:" . "\nEmail: " . $_POST['email'] . "\nWebsite: " . $_POST['web'] . "\n" . "\nFavorite Piece of work: " . $_POST['favwork'] . "\n" . "\nMessage: " . $_POST['message'];

            if(mail($to, $subject, $body, $headers)){
            }
       }

?>

そしてここにhtmlコードがあります:

<?php include("contactform.php"); ?>

<form id="form1" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<fieldset>
            <p class="form">Name*
                <input type="text" name="name" id="name" size="30"/>
            </p>
            <p class="form">Email*
                <input type="text" name="email" id="email" size="30" />
            </p>...(the rest of the form html code here)

そして最後の行:

 <p class="submit"><button name="submit" type="submit">Send</button></p>

    </form>
4

2 に答える 2

0

サーバー側では、次のことを確認できます。

if(isset($_POST['name'])) { } // only send the mail if this is true.

多くのクライアントサイドソリューションもあります。Javascriptを使用して独自に作成することもできます。「クライアント側のセキュリティは機能しない」ため、サーバー側のチェックを含める必要があります。ユーザーは、チェックを実行せずにJavascriptを無効にして、フォームを送信できます。

フォーム検証を行うJSライブラリの例を次に示します。

http://rickharrison.github.com/validate.js/

グーグルで見つけましたjavascript form validation

于 2012-09-22T17:36:11.733 に答える
0

一般に、ブラウザに入力を表示したり、データベースに保存したりする場合は、悪いことが起こらないように、ブラウザからの入力をエスケープする必要があります。

次の行の前:

if(mail($to, $subject, $body, $headers)){

次のように、フォームに検証を追加する必要があります。

$errors = array();
$name = $_POST['name'];
$email = $_POST['email'];

if (empty($name)) {
    $errors['name'] = 'Please enter your name!';
}

if (empty($email)) {
    $errors['email'] = 'Please enter your e-mail!';
}

次に、メールの行を次のように変更します。

if(!count($errors) && mail($to, $subject, $body, $headers)){

次に、代わりに:

echo("<p class=contactformnotsent>".$_POST['name'].", Message delivery failed...</p>");

メールが失敗した場合は、次のようなエラーを追加できます。

$errors['sendmail'] = 'Unable to send the e-mail!';

さらに、フォーム自体のエラーを探して、各入力の上部または下部でエラーをループします。

foreach ($errors as $error) {
    print $error."<br />\n";
}

もちろん、これはほんの始まりにすぎません。あなたは間違いなくいくつかの追加のチェックを行う必要があります。たとえば、名前の最小の長さをチェックしたり、奇妙な文字を削除したりします。

アップデート

ベン、あなたのコメントに基づくと、POSTが発生する前に検証を行いたいようです。この場合、基本的なjQuery検証を行うことをお勧めします。

これは、基本的なjQuery検証のページと例です。

それはあなたが得ているもの以上ですか?

さらに、コメントを送信した後にページをフォームに戻す場合は、フォームのURLに次のようにフォームのターゲットタグが含まれていることを確認してください。

<a name="comments_form" />
<form id="form1" action="<?php echo $_SERVER['PHP_SELF']; ?>#comments_form" method="POST">
于 2012-09-22T17:37:42.347 に答える