【问题标题】:Php mail() and Header("Location: 'url') causes an 'infinite' loop?Php mail() 和 Header("Location: 'url') 导致“无限”循环?
【发布时间】:2012-10-06 20:02:05
【问题描述】:

您好,我使用了一个教程来学习在 php 中发送带有可选附件的电子邮件所需的中等难度的标题信息。我对其进行了一些修改,它按预期工作,直到我将其更改为与教程完全匹配以进行测试。一旦我测试它,几秒钟后我检查了我的电子邮件,并且已经向我发送了 21 封电子邮件。我立即从服务器上删除了文件并关闭了页面。我想知道究竟是什么导致了这种行为。

在 mail() 函数之后,我立即设置了一个重定向到我想要的页面。

if (mail($mailto, $subject, "", $header)) {
    header("Location: $redirectUrl");
    exit;       
} 

其中 $header 是半页长。是导致它的 header() 函数吗?该页面只是说页面重定向时间太长。我对转义/非转义字符有问题吗?我只调用一次该函数,它不包含在任何类型的 for 循环或 do while 中。页面本身不包含在其他任何地方。

【问题讨论】:

  • 好吧,$redirectUrl 是什么?现在的代码没有任何问题,除非$redirectUrl 导致header() 将您重定向回相同的脚本。
  • 它只是重定向到同一站点但不同目录的单独页面。
  • PHP 的 mail() 函数很糟糕。我会强烈推荐使用像phpMailer 这样的邮件类。无论您使用 mail() 做什么,它都会让您的生活更轻松。
  • @Matt $redirectUrl 有可能实际上是空的吗?如果发生这种情况,重定向可能会出现不可预知的行为。尝试将其设置为硬编码值,看看会发生什么。
  • @NullUserException 嗯......不,但也许它超出了范围?我在脚本的顶部定义了它,然后我调用了我的 mail_with_attachment 函数(),其中 mail() 函数 itelsef 位于其中,并且我没有将变量传递给函数。是这个原因吗?

标签: php email header


【解决方案1】:

NullUserException 提出了一个很好的观点。变量超出范围。一个非常简单的更改修复了脚本。最初变量是在函数外部声明的,在函数内部是不可见的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 2014-04-22
    • 2020-08-27
    • 2021-05-07
    相关资源
    最近更新 更多