【问题标题】:PHP and contact formPHP 和联系表格
【发布时间】:2015-01-28 22:26:56
【问题描述】:

我无法为我的联系表单正确设置 php 脚本。我设法让它给我发了电子邮件,但它没有在电子邮件中显示姓名、电子邮件或文本。

PHP 脚本

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$to = 'myemail@email.comm';
$subject = 'Hello';

mail ($to, $subject, $message, "From: " . $name);
echo "Your Message has been sent.";
?>

联系表格

<form role="form" action="contact.php">
<div class="form-group">
<label for="InputName">Name</label>
<input name="name" type="text" class="form-control" id="InputName" placeholder="Enter Name">
</div>

<div class="form-group">
<label for="InputEmail">Email Address</label>
<input name="email" type="email" class="form-control" id="inputEmail" placeholder="Enter email">
</div>

<div class="form-group">
<label for="InputText">Message</label>
<input name="message" type="text" class="form-control" id="InputText" placeholder="Enter Text">
</div>

<button name="submit" type="submit" class="btn btn-default">Send</button>
</form>

【问题讨论】:

    标签: php html


    【解决方案1】:

    您正在使用 POST 变量,但您的表单如下:

    <form role="form" action="contact.php">
    

    没有定义 POST 方法。未定义方法时,表单默认为 GET。

    因此,您需要将表单更改为

    <form role="form" action="contact.php" method="post">
    

    来自您留下的评论:

    “我仍然有一个问题,不是给我他们输入的电子邮件,而是给我一个由托管公司创建的电子邮件,这是不好的。”

    答:这很可能是因为您在代码中使用From: 的方式,即此人的姓名。邮件需要一个电子邮件地址。

    替换:

    mail ($to, $subject, $message, "From: " . $name);
    

    与:

    mail ($to, $subject, $message, $header);
    

    并在$subject = 'Hello';下添加以下内容

    $header = "From: ". $name . " <" . $email . ">\r\n";
    

    这样,您将在电子邮件中看到此人的姓名,同时具有有效的“发件人”标题。


    补充说明:

    我还建议您使用以下方法测试是否有任何字段为空:

    if(!empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['message']))
    {
        // execute code
    }
    

    否则,任何人都可以在没有任何信息的情况下发送电子邮件。

    您也可以向其添加else{},例如else { echo "Please fill in all the fields."; }

    • 这是一种非常基本的方法。

    【讨论】:

    • 谢谢,它有效。我仍然有一个问题,不是给我他们输入的电子邮件,而是给我一个由托管公司创建的电子邮件,这是不好的。
    • @Robert 我已对我的答案进行了编辑,以向您展示原因和方式。重新加载它并靠近底部。
    • @Robert 我对可能的空字段进行了额外的编辑。您会在“附加说明”下方的底部附近找到它。
    • @Fred-ii- 你使用||?右边是&amp;&amp;?: if(!empty($_POST['name']) &amp;&amp; !empty($_POST['email']) &amp;&amp; !empty($_POST['message']))
    • @GuilhermeNascimento 你说得有道理,谢谢。我会做出改变。漫长的一天。
    【解决方案2】:

    您的表单需要该属性

    method="POST"
    

    没有这个,浏览器默认method="GET",在url中提交表单,例如http://example.com/default.php?name=First%20Last&amp;email=...

    【讨论】:

      【解决方案3】:

      你应该指定POST方法:

      <form role="form" method="POST" action="contact.php">
      

      【讨论】:

        猜你喜欢
        • 2015-06-17
        • 1970-01-01
        • 1970-01-01
        • 2015-09-24
        • 2020-04-05
        • 2013-08-15
        • 2016-06-23
        • 2017-06-25
        • 2013-01-28
        相关资源
        最近更新 更多