是否有一个简单的解决方案可以将 PHP 联系表单重定向回我的网站? [复制]
Posted
技术标签:
【中文标题】是否有一个简单的解决方案可以将 PHP 联系表单重定向回我的网站? [复制]【英文标题】:Is there a simple solution to redirect a PHP contact form back to my site? [duplicate] 【发布时间】:2020-05-01 07:35:18 【问题描述】:就像这里的很多人一样,我是新手,知道的编码足以打破一切。
我拿了一个联系表单模板(jscript 和 php 组合),它可以工作,甚至只破坏了我的 html 联系页面的其余部分。
但我担心的是验证的结果是它只产生两个句子之一,没有链接或导航返回到联系人或索引页面。作为一个 PHP 菜鸟,我只想尝试以正确的方式解决这个问题,几个小时的谷歌搜索并没有帮助。 (我的编程技能几乎没有超出 if/then 语句)。因此,欢迎任何意见或建议!
这是我认为导致死胡同的部分,在contact.php中谢谢!
// an email address that will be in the From field of the email.
$from = '<insert email>';
// an email address that will receive the email with the output of the form
$sendTo = '<insert email>';
// subject of the email
$subject = 'New message from contact form';
// form field names and their translations.
// array variable name => Text to appear in the email
$fields = array('name' => 'Name', 'surname' => 'Surname', 'need' => 'Need', 'email' => 'Email', 'message' => 'Message');
$okMessage = 'Contact form successfully submitted. Thank you, I will get back to you soon!';
$errorMessage = 'There was an error while submitting the form. Please try again later';
try
if(count($_POST) == 0) throw new \Exception('Form is empty');
$emailText = "You have a new message from your contact form\n=============================\n";
foreach ($_POST as $key => $value)
// If the field exists in the $fields array, include it in the email
if (isset($fields[$key]))
$emailText .= "$fields[$key]: $value\n";
// All the neccessary headers for the email.
$headers = array('Content-Type: text/plain; charset="UTF-8";',
'From: ' . $from,
'Reply-To: ' . $from,
'Return-Path: ' . $from,
);
// Send email
mail($sendTo, $subject, $emailText, implode("\n", $headers));
$responseArray = array('type' => 'success', 'message' => $okMessage);
catch (\Exception $e)
$responseArray = array('type' => 'danger', 'message' => $errorMessage);
// if requested by AJAX request return JSON response
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
$encoded = json_encode($responseArray);
header('Content-Type: application/json');
echo $encoded;
// else just display the message
else
echo $responseArray['message'];
【问题讨论】:
因此,您搜索了几个小时以寻找与“php 页面重定向”相关的解决方案,但没有遇到类似 this 或 this 的解决方案? 如果邮件是使用简单的echo '<a href="/link.php"><button class="your-class">Back</button></a>
完成的,您可以添加按钮,或者直接将标题添加到类似header("location: page.php");
的页面
@PatrickQ 哇,这里的老警卫都这么冷嘲热讽吗?是的,我找到了这些,但我几乎无法理解 PHP,即使在阅读了更多关于 w3schools 和 php.net 的信息之后,这些代码对我来说也毫无意义。因此请求更多帮助。
@SGarceau 在此处发布问题时,您应该表现出一定程度的努力来解决自己的问题。你没有这样做。您发布的代码显示了您所拥有的,但这不是您想要的。我们需要看看你为实现你想要的目标所做的努力。这些链接的问题有非常个基本答案。恐怕如果您无法充分理解它们甚至无法进行尝试,那么此处提供的任何其他答案对您来说都不会更有意义。如果你“几乎不能理解 PHP”,现在是时候停下来花时间学习你在做什么了。
@SGarceau 可能会更好地接受如下所示的问题:我正在尝试做 XYZ。为了实现这一点,我搜索了“此处的搜索词”,这使我找到了这些解决方案(链接,链接)。我试图通过这样做将这些解决方案实现到我的代码中:code here
。结果是ABC,但我期望/希望结果是CBA。我做了以下调试 (...) 并将问题缩小到 (blah blah)。
【参考方案1】:
1- 您可以在 $okMessage
中使用 html 代码:
$okMessage = "Contact form successfully submitted. Thank you, I will get back to you soon!<br><button onclick='history.go(-1);'>Back </button>";
2- 您可以将访问者重定向到您的页面;
$responseArray = array('type' => 'success', 'message' => $okMessage);
//strcmp checks if strings are equal, if they are it will redirect the user to the page
if(strcmp($responseArray['type'],'success') == 0)
header("Location: myPage.php");
//or you can give 5 seconds to the user to read your success message then redirect:
header( "Refresh:5; url=http://www.example.com/page2.php");
【讨论】:
非常感谢您提供的所有明确信息。我马上去试试看!以上是关于是否有一个简单的解决方案可以将 PHP 联系表单重定向回我的网站? [复制]的主要内容,如果未能解决你的问题,请参考以下文章