【问题标题】:thanks status when mail send with PHP感谢使用 PHP 发送邮件时的状态
【发布时间】:2015-04-20 07:48:31
【问题描述】:

我想在使用 PHP 发送邮件时显示感谢信息

我尝试了类似的东西

if(mail){echo "<script type='text/javascript'>alert('bedankt!');</script>";}

但我无法收到警报。 我将表单定向到 mail.php,但是当 mail.php 完成后,它会再次重定向到 index.html 并使用header('Location: ' . $_SERVER['HTTP_REFERER']);

这可能是它不显示警报的原因吗?还是我做错了什么?

编辑:

我的代码:

        <form action="mail.php" method="post" onsubmit="bedanktBericht()">
            <input class="invoeren" name="naamUser" type="text" placeholder="Naam" required>
            <input class="invoeren" name="nummerUser"  type="text" placeholder="Telefoonnummer" required>
            <input class="invoeren" name="onderwerpUser"  type="text" placeholder="Onderwerp" required>
            <textarea class="invoeren" type="text" name="opmerkingUser"  placeholder="Opmerking" required></textarea>           
            <button type="submit" id="contactButton" >Verstuur</button>
        </form>

<?php error_reporting(E_ALL); ini_set('display_errors', 1); 
ob_start(); 

$naamUser = $_POST['naamUser'];
$nummerUser = $_POST['nummerUser'];
$onderwerpUser = $_POST['onderwerpUser'];
$opmerkingUser = $_POST['opmerkingUser'];


$formcontent="Aanvraag formulier Domein naam \n
Naam: $naamUser \n
Telefoonnummer: $nummerUser \n
Onderwerp: $onderwerpUser \n
Opmerking: $opmerkingUser \n              
              ";              

$recipient = "email@email.nl";

$subject = "Terug Bellen";

$mailheader = "From:  \r\n";

mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");


header('Location: ' . $_SERVER['HTTP_REFERER']); /* Stuur de browser naar www.site.nl */  

if(mail){echo "<script type='text/javascript'>alert('bedankt!');</script>";}
?>

编辑 2: 我想在 index.html 页面上执行警报。 不是mail.php。这就是为什么我尝试在重定向后使用 echo 。

【问题讨论】:

  • 提交您的完整代码
  • 重定向不会;不会让它工作.. 虽然在进一步评论之前似乎需要分析代码!
  • if(mail){echo "";} 错误..使用警报条件第一个邮件句子..
  • 注意:mail() 返回TRUE 是否已接受交付。这并不意味着它实际上已经交付。
  • 另一种方法是使用“PHP Flash Messages”,这是您在 $_SESSION 中存储按摩的位置,并检查“目标”页面以显示消息(如果已设置)。然后删除该消息。

标签: php forms email


【解决方案1】:

问题是您在警报之前重定向用户:

mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");

header('Location: ' . $_SERVER['HTTP_REFERER']); // Redirect

// This code is never reached
if(mail){echo "<script type='text/javascript'>alert('bedankt!');</script>";}

此外,您的if 语句写错了。这样的事情会更有意义:

if (mail($recipient, $subject, $formcontent, $mailheader)) {
    echo "<script type='text/javascript'>alert('bedankt!');</script>";
    header('Location: ' . $_SERVER['HTTP_REFERER']); // Redirect
} else {
    die("Error!");
}

但是,echo 不是处理此问题的正确方法,我怀疑您能否使其以这种方式工作。

尝试查看Ajax,我认为这更适合您的问题。你也可以找到一些解释here

【讨论】:

  • header 不会重定向,因为它之前有输出。 (除非你使用输出缓冲)
【解决方案2】:

ma​​il.php 上这样做可以解决:

if(mail(paramiters...)){
    header('location:index.html?msg=successfull');
}

现在在 index.html

<script>
function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
var succ = getParameterByName('msg');
if(succ=='successfull'){
    alert('bedankt!');
}
</script>

【讨论】:

  • 我无法将 index.html 更改为 .php 我必须将其保留在 .html 是否有其他方法?
  • @Sourabh 请检查How to format 页面以格式化您的答案。
  • @Blank 你必须有一个 .php 文件,否则你的 php 代码将无法工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多