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

问题描述 投票:0回答:1

这真是太奇怪了。我有以下页面结构:

的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”404 209 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(此行重复两次,一次在日志开头,一次在结束)
  • Firefox日志中没有的Chrome行: 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两次。

javascript php execution script-tag
1个回答
0
投票

好吧,好像我的Firefox安装中有些东西被破坏了。我尝试在安全模式下启动它,问题没有显示出来。所以我对它进行了硬重置,现在问题不再显示了。

仍然想不出问题和<script>标签之间的任何联系...

© www.soinside.com 2019 - 2024. All rights reserved.