【问题标题】:Getting the php to jibe with the HTML in a form让 php 与表单中的 HTML 相匹配
【发布时间】:2015-11-24 23:02:51
【问题描述】:

我不擅长表格,我遇到了一些麻烦。问题是:

  1. 在 HTML 部分有一个“动作”项,我不知道该填写什么。现在它是#,但这只是一个占位符。

  2. 我不知道如何调用 php 脚本来使事情正常工作。

  3. 在 php 部分有这样的: $from = 'example@example.com';电子邮件地址区域实际上应该包含哪些内容?

    1. php 的 $body 部分看起来好像唯一要发送的就是消息。我还希望其他信息,如俱乐部、出生日期等出现在那里。我需要在 $body 部分单独说明这些项目吗?

我已经阅读了各种教程,但我对每个教程都越来越感到困惑,似乎没有一个能直接解决我的问题。有人可以帮我解决这个问题吗?我非常感激。如果您发现除我上面所述之外的任何其他明显错误,请随时分享该信息。 提前感谢您的帮助。

HTML:

<form method="post" action="#">
<div class="row uniform">
<div class="6u 12u$(xsmall)">

<label for="name">Full Name</label>
<input name="name" type="text" class="required" id="name" value="" />
</div>

<div class="6u$ 12u$(xsmall)">
<label for="email">Email Address</label>
<input name="email" type="email" class="required" id="email" value="" />
</div>

<div class="6u 12u$(xsmall)">
<label for="date">Date of Birth</label>
<input name="date" type="text" class="required" id="date" value="" />
</div>

<div class="6u$ 12u$(xsmall)">
<label for="age">Age as of July 1, 2016</label>
<input name="age" type="text" class="required" id="age" value="" />
</div>

<div class="6u 12u$(xsmall)">
<label for="phone">Phone Number</label>
<input name="phone" type="tel" class="required" id="phone" value="" />
</div>

<div class="12u$">
<label for="club">Current Club Membership</label>
<div class="select-wrapper">
<select name="club" class="required" id="club">
<option value="">-</option>
<option value="Colonial Road Runners">Colonial Road Runners</option>
<option value="Peninsula Track Club">Peninsula Track Club</option>
<option value="Tidewater Striders">Tidewater Striders</option>
</select>
</div>                                                    
</div>

<div class="12u$">
<label for="message">Message</label>
<textarea name="message" id="message" rows="6"></textarea>
</div>

<div class="12u$">
<ul class="actions">
<li><input type="submit" value="Send Message" class="special" /></li>
<li><input type="reset" value="Reset" /></li>
</ul>
</div>
</div>
</form>

php:

<?php
    if (isset($_POST["submit"])) {
        $name = $_POST['name'];
        $email = $_POST['email'];
        $date = $_POST['date'];
        $age = $_POST['age'];
        $phone = $_POST['phone'];
        $message = $_POST['message'];
        $from = 'example@example.com'; 
        $to = 'hrsupergp@gmail.com'; 
        $subject = 'New Registration';

        $body = "From: $name\n E-Mail: $email\n Message:\n $message";

        // Check if name has been entered
        if (!$_POST['name']) {
            $errName = 'Please enter your name';
        }

        // Check if email has been entered and is valid
        if (!$_POST['email'] || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
            $errEmail = 'Please enter a valid email address';
        }


    if (mail ($to, $subject, $body, $from)) {
        $result='<div class="alert alert-success">Thank You! I will be in touch</div>';
    } else {
        $result='<div class="alert alert-danger">Sorry there was an error sending your message. Please try again later</div>';
    }
}
?>

【问题讨论】:

    标签: php forms


    【解决方案1】:

    您的问题 1 和 2 只与您的操作有关,即提交表单时要加载的页面。这可以是当前文件(在 PHP 中,您可以执行例如 &lt;?php echo __FILE__; ?&gt;&lt;?php echo $_SERVER['PHP_SELF'] ?&gt;)或直接在脚本 index.php 中检查数据。所以基本上把它指向你的 PHP 代码所在的文件。

    3 只是邮件标题信息,发件人电子邮件地址可以是 "no-reply@yourdomain.com""info@yourdomain.com" 或您自己的电子邮件地址,因此当人们在他们的电子邮件客户端中单击“回复”时,它会将其发送到填写的电子邮件地址。根据下面的评论,这被“回复”的附加标题所推翻。

    要将表单选定字段添加到您的电子邮件正文中:

    $message = "This is a string before the contents of $POST['message']" . $message;
    $message .= "This is a string after the contents of $POST['message']"
    
    $body = "From: $name\n E-Mail: $email\n Message:\n $message";
    

    但是,电子邮件非常繁琐,不正确的标头信息可能会导致电子邮件被标记为垃圾邮件。例如,电子邮件标题中的新行应该使用"\r\n" 而不是"\n"

    我对发送电子邮件的建议是使用名为 phpmailer 的库。 设置起来可能有点麻烦,但现在您不需要处理标头信息。

    【讨论】:

    • 目前是的,如果你想在邮件正文中添加附加信息,它只会在正文中包含 $_POST['message'],你可以在 $message 中添加内容在创建 $body 变量之前进行变量。
    • 您对$from 的看法不正确。查看手册页上的第二个示例,了解如何构造字符串。它不能只是一个电子邮件地址。 php.net/manual/en/function.mail.php
    • 我仍然不知道如何将表单绑定到脚本。我在表单提交后更改了加载我的 index.html 文件的操作,并且确实如此。但是,任何时候都不会生成包含表单数据的电子邮件。我错过了什么?
    • 一个 html 文件不执行 php 代码,使用您的 php 代码所在文件的文件名来验证您的表单并发送电子邮件。
    • 我首先尝试了,它只是将 php 文件加载到浏览器中,没有电子邮件。当时我的代码是这样的:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 2010-11-16
    • 2011-09-03
    • 2015-05-05
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    相关资源
    最近更新 更多