繁体   English   中英

PHP的会话存储行为成变量?

[英]PHP Session storing behavior into variables?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM