0

我正在尝试在页面加载之间保存变量值。

我认为下面的代码在用户第一次点击页面时不会显示任何内容。下一次应该显示数字 5。第一次和之后每次都显示零 (0)。

<?php
session_start();
$_SESSION['test'];
echo $_SESSION['test'];
$_SESSION['test'] = 5;
?>

难道我做错了什么?是否有可能我的 PHP 服务器设置不正确?等等

服务器设置

PHP Version 5.3.13
session.auto_start  Off Off
session.bug_compat_42   Off Off
session.bug_compat_warn Off Off
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value
session.cookie_httponly Off Off
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    /dev/urandom    /dev/urandom
session.entropy_length  0   0
session.gc_divisor  1000    1000
session.gc_maxlifetime  1440    1440
session.gc_probability  1   1
session.hash_bits_per_character 4   4
session.hash_function   0   0
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   /var/php_sessions   /var/php_sessions
session.serialize_handler   php php
session.use_cookies On  On
session.use_only_cookies    On  On
session.use_trans_sid   1   1
4

4 回答 4

3
  1. session.save_path (/var/php_sessions) 目录是否可写。我看到你没有使用 tmp 目录所以我问这个。

  2. session.use_trans_sid 应为 0 - 如果启用“use_trans_sid”,则会话 ID 每次都附加到 URL。我不确定 ajax 请求会发生什么,但我认为它会附加到。

  3. 使用 session.use_only_cookies 作为 1 和 session.use_trans_sid 作为 1 有点冲突,因为 use_only_cookies 指定模块是否仅使用 cookie 在客户端存储会话 ID。

于 2013-03-19T19:35:41.763 回答
0

您可以尝试以下方法:

<?php
session_start();
if (!isset($_SESSION['test'])) {
    $_SESSION['test'] = 0;
}
echo $_SESSION['test'];
$_SESSION['test'] = 5;
?>
于 2013-03-19T19:23:03.030 回答
0
$_SESSION['test'];

我认为这一行是在 $_SESSION 数组中创建一个新元素,其键为“test”......因为没有为其分配值,所以它的值为 0。

尝试将其更改为

if(!array_key_exists('test', $_SESSION)) {
    $_SESSION['test'] = 5;
}
于 2013-03-19T19:25:56.420 回答
0

像这样的东西???:

  <?php
    session_start();
    if(isset($_SESSION['test']))
    {$_SESSION['test'] = 5;}
    else
    {
      $_SESSION['test'] = "";
    }
    echo $_SESSION['test'];
?>

PS:这都是关于做这些事情的顺序,你应该检查会话是否存在分配5,如果不创建var并且什么都不分配……你第一次执行这个脚本不会什么都不显示,但后来它会显示 5。

萨卢多斯 ;)

于 2013-03-19T19:25:58.917 回答