[英]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.