是否有一个简单的解决方案可以将 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 '&lt;a href="/link.php"&gt;&lt;button class="your-class"&gt;Back&lt;/button&gt;&lt;/a&gt; 完成的,您可以添加按钮,或者直接将标题添加到类似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 联系表单重定向回我的网站? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Paypal与联系表格7

联系表格问题,PHP/css

在 URL 中隐藏 .php 会破坏联系表单 [关闭]

联系表格 PHP 重定向不起作用

PHP 联系表单的配置问题

在 PHP 中获取联系表 7 表单 ID