2

这仅在 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]

再次编辑:根据用户 2086860 在评论中的请求,我将运行完整的代码流。

首先,我使用以下代码创建一个脚本:

 <?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。

4

1 回答 1

0

Chrome(显然还有其他浏览器)正在寻找一个网站图标,或者显示在页面标题旁边的图像。一旦我像这样在我的页面上添加了库存图片:

<!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 提出这个建议!

于 2013-11-12T01:34:27.863 回答