PHP文件执行了两次,但仅在Firefox中

时间:2018-09-01 09:21:56

标签: javascript php execution script-tag

这真的很奇怪。我具有以下页面结构:

index.php

<?php
session_start();
include_once('src/functions.php');
logMe('index');
include_once(TEMPLATES_FOLDER . 'standard/header.php');
[...]
include_once(TEMPLATES_FOLDER . 'standard/footer.php');
?>

header.php

<?php logMe('header'); ?>

<!DOCTYPE html>
<html lang="en">
<head>

    [...]

    <?php if (isset($_SESSION['accountId'])) : ?>
        <script type="text/javascript">
            [...]
        </script>
    <?php endif; ?>

</head>
<body>

[...]

我希望获得2条日志行,其中一条来自index.php,另一条来自header.php(由于logMe()函数)。

现在,如果我在Firefox(61.0.2)中运行该页面,则会得到4条日志。如果我在Chrome(68.0.3440.106)中运行它,则会收到2条日志。因此,在Firefox中似乎它执行两次所有操作。

更奇怪的是,如果我删除了<script>标签,该问题似乎消失了,因为Firefox仅记录2行。但是,即使我放回一个空的<script>标签,它也会记录4行!因此,问题的关键似乎在于这个<script>标签,但是怎么可能呢?

此外,我在<script>中也有一个footer.php标签。然后,我希望遵循此行为获得6条日志行,但是我总是只得到4条日志行。只有将它们(从页眉和页脚中都删除),我才能得到正确的行为(2条日志)。

有人知道发生了什么事吗?


更新

根据raina77ow请求,这是access.log的区别:

  • Firefox记录了16行,而Chrome记录了15行
  • 不在Chrome日志中的Firefox行:
    • 127.0.0.1--[01 / Sep / 2018:11:47:49 +0200]“ GET /favicon.ico HTTP / 1.1” 404209
    • 127.0.0.1--[01 / Sep / 2018:11:47:49 +0200]“ GET /src/lib/toastr/toastr.js.map HTTP / 1.1” 304-
    • 127.0.0.1--[01 / Sep / 2018:11:47:49 +0200]“ GET /?pageId = 0 HTTP / 1.1” 200 4242 (此行重复两次,从头开始一次日志,最后一次)
  • Chrome不在Firefox日志中的行:
    • 127.0.0.1--[01 / Sep / 2018:11:48:40 +0200]“ GET /src/lib/toastr/toastr.js.map HTTP / 1.1” 200 25633
    • 127.0.0.1--[01 / Sep / 2018:11:48:40 +0200]“ GET /src/lib/bootstrap-3.3.7/css/bootstrap.min.css.map HTTP / 1.1” 200 542194

因此Firefox有效地两次请求?pageId=0

1 个答案:

答案 0 :(得分:0)

好吧,我的Firefox安装似乎被宠坏了。我尝试以安全模式启动它,但未显示问题。因此,我对其进行了硬重置,现在问题不再显示。

仍然无法想到问题和<script>标签之间的任何联系...