【问题标题】:PHP Form MessagePHP 表单消息
【发布时间】:2015-11-20 08:38:40
【问题描述】:

所以我有一个表格:

<form method="post" action="contactus.php?message=ok" name="myForm" autocomplete="off">
    <label for="Name">Name:</label>
    <input type="text" name="Name" id="Name" maxlength="60" required/>

    <label for="email">Email:</label>
    <input type="text" name="email" id="email" maxlength="120" required/>

    <label for="message">Message:</label><br />
    <textarea name="message" rows="20" cols="20" id="message" required></textarea>

    <input type="submit" name="submit" value="Submit" class="submit-button" onsubmit="displayMessage()" />

以及发送电子邮件的代码:

<?php 
if($_POST["submit"]) { 
  // The message
  $message=$_POST["message"];   
  $email=$_POST["email"];
  // In case any of our lines are larger than 70 characters, we should use    wordwrap()
  $message = wordwrap($message, 70, "\r\n");
  // Send
  mail('myemail.co.uk', $email, $message);
  $sent_mail = true;
}
?>

最后:

<?php
if (isset($sent_mail)) {
  echo 'Thank you. We will be in touch soon.';
}
?>

因此,当发送电子邮件时,sent_mail 设置为“true”,因此应回显感谢信息。但现在这行不通。电子邮件先发送,但未显示感谢信息。当提交按钮被按下时,我基本上只需要一条感谢信息出现在页面上的某个位置。

有什么想法吗?

【问题讨论】:

  • 这三个代码都在同一个文件中吗?我不认为。我希望表单和“谢谢”在同一个文件中,邮件代码在另一个文件中。你能更新代码位置/文件吗?
  • 它们都在同一个文件contactus.php中
  • 你能更新完整的文件内容吗?将两个 php 代码保存在单个 框架内。它有效。
  • 我在我的服务器上测试了你的代码,它运行良好。我没有发现任何问题。显示您的完整文件代码,因为问题不在于这个。
  • Form message alert的可能重复

标签: php html forms email


【解决方案1】:

使用

if(mail('myemail.co.uk', $email, $message))
    $sent_mail = true;
else
    $sent_mail = false;

最后:

<?php
 if ($sent_mail) {
 echo 'Thank you. We will be in touch soon.';
 }
else
 echo 'Message cannot be send';
 ?>

【讨论】:

  • 谢谢。这应该有效,但没有。可能是因为按下按钮时页面会重新加载,所以没有显示感谢信息
  • Thank you 消息应该在同一页面上显示给用户。
  • 谢谢,这样的作品。当我使用“查找”时,网页说它在那里,但我在任何地方都看不到文字。
  • 在您的网页的view source 中搜索。
【解决方案2】:

简单地使用 if 代替 isset

这样

<?php
 if ($sent_mail) {
 echo 'Thank you. We will be in touch soon.';
 }
else
 echo 'Unale to send message';
 ?>

【讨论】:

  • 谢谢你,那种作品。当我使用“查找”时,网页说它在那里,但我在任何地方都看不到文字。
【解决方案3】:

mail 函数返回一个布尔值(真/假),所以你可以这样做

if (mail('myemail.co.uk', $email, $message)) {
    echo "Thank you. We will be in touch soon.";
} else {
    echo "Something went wrong, the email was not sent!";
}

另外,mail(参数)的结构是收件人地址、主题、消息。这意味着您当前的主题是电子邮件地址,我不确定这是否是您想要的?

【讨论】:

  • 谢谢。这应该有效,但没有。可能是因为按下按钮时页面会重新加载,所以没有显示感谢信息。虽然当我使用“查找”时,网页说它在那里,但我在任何地方都看不到文字。是的,这就是我的意图
  • 表单中的按钮被按下,然后将您发送到contactus.php。您希望在该文件中拥有mail 函数。 -- 再次发送邮件后是否重新加载页面?
  • 带有表单的页面是contactus.php,所以一切都在contactus.php上。
  • 如果所有内容都在同一页面上,则您的表单上不需要 action-attribute,但这与您的问题无关。 -- 如果您对同一页面进行操作,它会重新加载,然后检查是否发生了任何新情况(是的,if (isset($_POST["submit"])) 已设置)。这导致该括号内的任何内容都已完成,这也是 mail 函数,对吗?如果是这种情况,它会发送电子邮件,因此您无需再重新加载,您只需在此处显示消息,代码如我的答案所示。
  • 谢谢,这样的作品。当我使用“查找”时,网页说它在那里,但我在任何地方都看不到文字。
【解决方案4】:

您将布尔值分配给 $sent_mail 并将其设置为 True。

<?php if($sent_mail){
echo "Email sent successfully";} ?>

【讨论】:

  • 问题是别的,那么!
猜你喜欢
  • 1970-01-01
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
  • 2011-08-31
相关资源
最近更新 更多