这只发生在Chrome
中有没有人经历过将功能行为存储到变量中的PHP会话?我创建了以下脚本:
<?php
session_start();
$_SESSION['count'] = (isset($_SESSION['count'])) ? $_SESSION['count'] + 1 : 0;
echo $_SESSION['count'];
?>
您认为这会在每次页面加载时回显0,1,2,3等。但是,我得到1,3,5,7等等。我发现由于某种原因,$ _SESSION ['count']就好像它的递增行为已存储在变量中。它在每次页面加载时似乎增加2的原因是因为当调用$ _SESSION ['count']时,它会自动增加1。为清楚起见,将在每个页面加载时输出以下脚本和更高的数字。
<?php
session_start();
echo $_SESSION['count'];
?>
这将回显$ _SESSION ['count']是什么,然后每个页面加载$ _SESSION ['count'] + 1。我已经尝试取消设置会话,清除$ _SESSION变量,并使用相同的脚本在各个目录中创建新文件。我也在http://codepad.viper-7.com/上尝试过,它运行正常。任何人都知道为什么会发生这种情况?当我将会话变量设置为随机数时,我遇到了类似的行为。在每个页面加载时,我只是通过回显变量得到一个新的随机数。当我序列化或var_dump变量时,它只返回一个字符串值。
这是我用来取消会话的原因:
$_SESSION = array();
session_unset();
session_destroy();
我在几个浏览器上尝试过该脚本。 IE和Firefox正确递增1;但Chrome增加2.任何想法为什么浏览器会影响这个?
编辑:如果我创建一个新脚本并更改变量,它可以正常工作。我注意到的是,每当我需要index.php中的这个脚本时,就像index.php一样,我开始再次遇到这个问题。所以,index.php正在发生一些事情。我的.htaccess多次加载页面会有问题吗?这是:
我的.htaccess 选项+ FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
DirectoryIndex /index.php
FallbackResource /index.php
#Allow cross domain AJAX
Header set Access-Control-Allow-Origin *
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
再次编辑:根据评论中的user2086860的请求,我将完成整个代码流程。
首先,我使用以下代码创建一个脚本:
<?php
session_start();
$_SESSION['counter'] = (isset($_SESSION['counter'])) ? $_SESSION['counter'] + 1 : 0;
echo $_SESSION['counter'];
?>
此代码本身按预期工作,打印0,1,2,3等
现在,如果我通过我的index.php需要这个脚本,那么:
<?php
require 'test6.php';
?>
数字开始增加2而不是1.这需要通过我的index.php导致问题。它还会搞砸我的脚本文件,这样直接访问test6.php现在增加2而不是1.你可以在这里看到它:
测试网址已移除
我很清楚,上面的代码是 我的所有代码 。 index.php或test6.php中没有包含任何其他内容。这只发生在Chrome中。 Firefox和Internet Explorer正常工作,递增1。
答案 0 :(得分:0)
Chrome(显然是其他浏览器)正在寻找一个favicon,或者页面标题旁边显示的图片。一旦我将股票图像添加到我的页面,就像这样:
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon"
type="image/png"
href="https://mysite.com/icon.png">
</head>
有效。感谢@ dev-null-dweller建议这个!