0

私はまったくの初心者なので、ご容赦ください :)…何とかフォームを作成し、PHP を使用してデータをメール アドレスに送信しました。ただし、送信をクリックすると、現在のページにとどまってメッセージを表示する代わりに、画面が空白になります。ある種の PHP コードが欠落していると思いますか?

また、フォームで JQuery バリデータ プラグインを使用したいのですが、基本的にフォームを台無しにせずに追加するにはどうすればよいですか?

私の HTML:

<div>
<form id="form_id" name="form_name" action="scripts/index.php" method="post">
                <div>
                    <label for="name">Name: </label>
                    <input type="text" name="name" id="name" placeholder="John Smith" required/>
                </div>

                <div>
                    <label for="email">Email: </label>
                    <input type="email" name="email" id="email" placeholder="name@mail.com" required/>
                </div>

                <div>
                    <label for="message">Message: </label>
                    <textarea name="message" id="message" rows="5" cols="30"></textarea>
                </div>

                <div>
                    <input id="submit" type="submit" name="submit" value="submit" />
                </div>
            </form>
            <p id="feedback"><?php echo $feedback; ?></p>
</div>

私のPHP:

<?php

$to = 'example@gmail.com';
$subject = 'Message from The Rocket Factory';

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

$body = <<<EMAIL

Hi, my name is $name.

$message

From $name
My Address is $email


EMAIL;

$header = "From: $email";

if($_POST){
    mail($to, $subject, $body, $header);
    $feedback = 'Thanks for your message';
}

?>
4

3 に答える 3

1

PHPスクリプトを作成すると、空のページが返されます。これは、そのスクリプトが電子メールを送信するためだけであるためです。PHPスクリプトとHTMLスクリプトをスクリプトの上にスクリプトと組み合わせて、必要なものPHPを取得し、次のサンプルのようにフォーム アクションを編集して空にする必要があると思います。

<?php

$to = 'example@gmail.com';
$subject = 'Message from The Rocket Factory';

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

$body = <<<EMAIL

Hi, my name is $name.

$message

From $name
My Address is $email


EMAIL;

$header = "From: $email";

if($_POST){
    mail($to, $subject, $body, $header);
    $feedback = 'Thanks for your message';
}

?>

<div>
<form id="form_id" name="form_name" action="" method="post">
                <div>
                    <label for="name">Name: </label>
                    <input type="text" name="name" id="name" placeholder="John Smith" required/>
                </div>

                <div>
                    <label for="email">Email: </label>
                    <input type="email" name="email" id="email" placeholder="name@mail.com" required/>
                </div>

                <div>
                    <label for="message">Message: </label>
                    <textarea name="message" id="message" rows="5" cols="30"></textarea>
                </div>

                <div>
                    <input id="submit" type="submit" name="submit" value="submit" />
                </div>
            </form>
            <p id="feedback"><?php echo $feedback; ?></p>
</div>
于 2013-01-15T03:48:43.297 に答える
0

これは 2 つの方法で実現できます。 1. 1 つのページに php と html のコードを配置します。2. ajax を使用してフォームを送信します。

 <div>
    <form id="form_id" name="form_name" action="scripts/index.php" method="post">
            <div>
                <label for="name">Name: </label>
                <input type="text" name="name" id="name" placeholder="John Smith" required/>
            </div>

            <div>
                <label for="email">Email: </label>
                <input type="email" name="email" id="email" placeholder="name@mail.com" required/>
            </div>

            <div>
                <label for="message">Message: </label>
                <textarea name="message" id="message" rows="5" cols="30"></textarea>
            </div>

            <div>
                <input id="submit" type="submit" name="submit" value="submit" />
            </div>
        </form>
 </div>

   <?php

     $to = 'example@gmail.com';
     $subject = 'Message from The Rocket Factory';

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

      $body = <<<EMAIL
         Hi, my name is $name.
           $message
         From $name
        My Address is $email
       EMAIL;

  $header = "From: $email";

if($_POST){
     mail($to, $subject, $body, $header);
    $feedback = 'Thanks for your message';
    echo '<p id="feedback">'.$feedback.'</p>'; <-- Notice this..
 }
?>

jquery ($.ajax) または javascript で ajax を使用することもできます。

于 2013-01-15T04:07:49.423 に答える
0

Your form will take the user to scripts/index.php. You are echoing the '$feedback' var on the page with the HTML form. Redirect from scripts/index.php using
header("location: filelocation"); exit();

于 2013-01-15T03:41:43.850 に答える