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

您可以通过两种方式实现这一点: 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

您的表单会将用户带到 scripts/index.php。您正在使用 HTML 表单在页面上回显“$feedback”变量。
使用header("location: filelocation");从 scripts/index.php 重定向 出口();

于 2013-01-15T03:41:43.850 回答