变量不在PHP中更新

时间:2017-08-03 08:47:56

标签: php html

[PHP新手在这里,如果这是一个微不足道的问题请耐心等待]

我创建了一个HTML表单,在提交时会打开submit_form.php。在里面,我处理输入表格的数据并发送确认电子邮件。我为邮件发送过程写了一个function.php文件中,我有PHP以及HTML代码。该文件的重要部分如下所示:

<?php
    $success = "undefined";

    /* ... */

    function send_mail($to, $from, $fromName, $subject, $message) {
        /* headers, etc. */

        if (mail($to, $subject, "", $header)) {
            $success = "true";
        } else {
            $success = "false";
        }
    }
?>

<html>
    <body>
        success? <?php echo $success; ?>
    </body
</html>

现在,在成功网站上加载HTMLHTML脚本下面的.php代码,在同一个文件中),我将此代码用于验证电子邮件是否已发送成功:

success? <?php echo $success; ?>

...显示以下输出:success? undefined

结论

这将导致我得出结论,邮件尚未发送,但是,我收到了电子邮件。
我猜测在执行邮件功能之前正在显示HTML代码。

问题

在邮件功能完成后,有没有办法让HTML执行

修改

将问题的标题从Delay site change for php function completion更改为Variable not updating in PHP,因为(现已修复)问题不是HTML之前执行的PHP,但变量未更新。
感谢@Adder!

1 个答案:

答案 0 :(得分:2)

问题是$success变量不在全局范围内。使用global将其设为全局。

function send_mail($to, $from, $fromName, $subject, $message) {
        global $success;

        /* headers, etc. */

        if (mail($to, $subject, "", $header)) {
            $success = "true";
        } else {
            $success = "false";
        }
    }

变量范围表示变量可见的位置。在php中,默认情况下,函数本地的变量不会存在于全局范围内。