javascript - 为什么我的简单邮件 php 表单需要很长时间才能加载?

标签 javascript php jquery html email

下午好,堆栈!我目前正在开发一个简单的 PHP 邮件表单,在开始编辑之前,我之前的版本实际加载表单只花了不到一秒的时间,但是有了这些新添加的内容,现在加载表单至少需要 5-10 秒.

这是我当前的代码,需要很长时间才能加载,这里是 LIVE LINK ;

<?php
// We use the name2 field as bait for spambots.  It's display is off,
// so humans wouldn't know to enter anything into it.  Robots would, 
//  so we ignore submissions with info in name2.

$mail_sent = false;

if(sizeof($_POST) && $_POST["name2"] == "") // receiving a submission
{   

 // receiving a submission
    $to = $_POST['department'];

    // prep our data from the form info
    $senderName     = $_POST['name'];
    $senderEmail    = $_POST['email'];
    $department     = $_POST['department'];
    $subject        = "Visitor message in $department department"; 
    $messageBody    = $senderName . ' ('.$senderEmail.') wrote for '.$department.' department: ' . $_POST['message'];

    if($department == 'customer') { //if customer was selected
    $to = 'email@email.com';
    }

    else if($department == 'distribution') { //if distribution was selected
    $to = 'email@email.com, email@email.com';
    }

    else if($department == 'press') { //if press was selected
    $to = 'email@email.com';
    }

    else if($department == 'career') { //if career was selected
    $to = 'email@email.com';
    }

    else if($department == 'other') { //if other was selected
    $to = 'email@email.com';
    }

    // From 
    $header = "From: $senderName <$senderEmail>";
}

    // Send it!

    $send_contact = mail($to, $subject, $messageBody, $header);

    if($send_contact){
        $mail_sent = true;
    }
    else {
        echo " ";
    }
?>

但我确实觉得奇怪的一件事是,将我的更改发送给多个收件人开始告诉我错误,即使它工作得很好,所以我改变了..

if($send_contact){
    $mail_sent = true;
}
else {
    echo "ERROR";
}

只打印一个空格,这样用户就看不到它。也许,这可能会导致实际发生的事情延长加载延迟?但是..它工作得非常好而且完美。

有人知道为什么这个表单需要这么长时间才能加载吗?这绝对是我删除它或恢复到旧版本时的代码,它用 ySlow 在不到一秒的时间内加载。

这是我的代码的先前版本,可以立即加载,并显示 LIVE LINK ;

<?php

// We use the name2 field as bait for spambots.  It's display is off,
// so humans wouldn't know to enter anything into it.  Robots would, 
//  so we ignore submissions with info in name2.

$mail_sent = false;

if(sizeof($_POST) && $_POST["name2"] == "") // receiving a submission
{   
    define("SUBJECT",   "Visitor Message from Domain.com");

    // production recipient:
    define("RECIPIENT", "email@email.com");

    // prep our data from the form info
    $senderName     = $_POST['name'];
    $senderEmail    = $_POST['email'];
    $subject        = SUBJECT; 
    $messageBody    = $senderName . ' ('.$senderEmail.') wrote:

' . $_POST['message'];

    // From 
    $header         = "from: $senderName <$senderEmail>";

    // To
    $to = RECIPIENT;

    // Send it!
    $send_contact = mail($to, $subject, $messageBody, $header);

    // Check success of send attempt
    if($send_contact){
        // show thankyou screen
        $mail_sent = true;
    }
    else {
        // send failed.
        echo "ERROR";
    }
}

?>

非常感谢您的帮助,因为我已经在这方面坚持了一段时间了,感谢您的时间和努力,祝大家周末愉快。

最佳答案

$send_contact = mail($to, $subject, $messageBody, $header);

if($send_contact){
    $mail_sent = true;
}
else {
    echo " ";
}

这部分代码被排除在新版本中处理表单提交的 if block 之外。所以每次页面加载时都会执行它。这会减慢加载速度,因为 mail() 函数尝试发送电子邮件并在每次加载页面时给出错误。您的意图是仅在正确提交表单后才发送电子邮件。从那时起,打开 php 通知将是一个好主意。这将使捕获这样的错误变得更容易。

关于javascript - 为什么我的简单邮件 php 表单需要很长时间才能加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22430309/

相关文章:

javascript - gmap 错误 d 未定义

php - RadiPanel DJ 面板违规错误

php - 显示两个 SQL 表中的数据语法解释

php - 使用纯 jquery/javascript 创建弹出确认框

javascript - 使用 Jquery 添加没有值的 HTML 属性

jquery - 数组与多维数组的比较

javascript - 如何更改 Gmaps.js 在 Google map 中使用的图标?

javascript - ng 表类型错误 : Cannot set property '$data' of null

javascript - 如何调试适用于我的桌面但不适用于我的手机的 Javascript?

php - 使用空值格式化 php echo