PHP会话未存储

时间:2013-09-07 01:54:30

标签: php session php-internals

我有两个页面,但第二个页面没有收到$_SESSION["1"]

更新:原来,如果我在会话中输入一个数字,它将无效。我键入了一个正常的字符串并且工作了..我从未见过这种情况

第一

<?php
session_start();
$_SESSION["1"] = "LOGGED";
?>

第二

<?php
session_start();

echo $_SESSION["1"];
?>

为什么这不起作用?

3 个答案:

答案 0 :(得分:3)

使用单个数字的会话变量不起作用,但1a将起作用,a1也会起作用,即使只是单个“字母”a也可以。

第一

<?php
session_start();
$_SESSION["a1"] = "LOGGED";
?>

第二

<?php
session_start();
echo $_SESSION["a1"];
?>

PHP.net手册关于会话变量的例子

<?php
$_SESSION[1][1] = 'cake'; // fails

$_SESSION['v1'][2] = 'cake'; // works
?>

来源:http://php.net/manual/en/language.types.array.php


编辑:

  • 根据bob-the-destroyer的评论:

要从php.net/manual/en/language.types.array.php添加关于数组键,“包含有效整数的字符串将转换为整数类型”。 $ _SESSION上的手册说“关联数组”。因此,字面意思是一个关联数组...?如果关于访问和存储会话数据的这些重要信息仍然隐藏在手动注释中,那就没有任何好处。

答案 1 :(得分:0)

您可以将$ _SESSION分配给定义$ _SESSION目的的名称,例如。 $ _SESSION ['logged'] =已记录;不要忘记用字母开始你的$ _SESSIONS,并使它们更具描述性。这使您的代码更易读,更易于理解

答案 2 :(得分:0)

行为的原因是C变量声明。由于变量名称不能以数字开头。