在测试一些编程时,我发现htaccess -fallbackresource与我的php代码一起演示了一些奇怪的行为。
我有一个包含以下代码的htaccess文件:
FallbackResource index.php
我还有一个包含以下代码的php文件:
<?php
session_start();
if (isset ($_SESSION['times_visited'])){
$_SESSION['times_visited']++;
}
else{
$_SESSION['times_visited'] = 1;
}
?>
<html>
<head>
<link rel='stylesheet' type='text/css' href='not_existing.css'>
<script href='not_existing.js'></script>
</head>
<body>
<p>You visited this page <?php echo $_SESSION['times_visited'];?> times</p>
</body>
</html>
磁盘上不存在.css和.js文件。
当我第一次运行php时,它输出:
You visited this page 1 times
当我刷新页面时,我得到:
You visited this page 3 times
每次刷新页面后,计数器不会上升1,而是上升2!
当我删除脚本标记时,计数器仍然会增加两个。 当我删除链接标记时,计数器会上升一个。
当我添加另外五个链接标签时,计数器会增加5 当我添加另外五个脚本标签时,计数器只会增加一个。
最初的问题是在一个更大的程序中,所以我花了一些时间来弄清楚发生了什么。 最后,我发现link-tag中的不存在的文件激活了fallbackresource,导致index.php运行一段额外的时间。
我无法弄清楚为什么link-tag和script-tag表现不同?
答案 0 :(得分:0)
由于href
没有<script>
属性,因此未加载脚本,您可能需要src
。这就是为什么您的<script>
代码似乎什么都不做的原因。除此之外,您可能会看到另外一个异常现象。
<?php ?>
内容在服务器上呈现。这种情况发生在之前浏览器甚至获取页面的内容,这是之前的,浏览器知道甚至加载<link>
和<script>
标签中的内容。
从技术上讲,您可能会看到之前页面加载的计数。你确定这样的事情没有发生吗?
等