PHP 个文件执行了两次,但仅在 Firefox 中
PHP files executed twice, but only in Firefox
这真的很奇怪。我有以下页面结构:
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>
标签,但是怎么会呢??
此外,我在 footer.php
中也有一个 <script>
标签。然后我希望在这种行为之后获得 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 (这一行重复两次,一次在开头日志的最后一次)
- 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
两次。
好的,我的 Firefox 安装似乎出了问题。我尝试以安全模式启动它,但问题没有出现。所以我对其进行了硬重置,现在问题不再出现了。
仍然想不出问题与 <script>
标签之间的任何联系...
这真的很奇怪。我有以下页面结构:
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>
标签,但是怎么会呢??
此外,我在 footer.php
中也有一个 <script>
标签。然后我希望在这种行为之后获得 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 (这一行重复两次,一次在开头日志的最后一次)
- 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
两次。
好的,我的 Firefox 安装似乎出了问题。我尝试以安全模式启动它,但问题没有出现。所以我对其进行了硬重置,现在问题不再出现了。
仍然想不出问题与 <script>
标签之间的任何联系...