页面加载的PHP会话变量

时间:2013-03-19 19:16:34

标签: php session variables

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

我认为下面的代码在用户第一次点击页面时不会显示任何内容。下一次应显示数字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 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

您可以尝试以下方法:

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

答案 2 :(得分:0)

$_SESSION['test'];

我认为这一行在$ _SESSION数组中创建了一个带有'test'键的新元素...因为没有为它赋值,所以它的值为0.

尝试将其更改为

if(!array_key_exists('test', $_SESSION)) {
    $_SESSION['test'] = 5;
}

答案 3 :(得分:0)

这样的东西??:

  <?php
    session_start();
    if(isset($_SESSION['test']))
    {$_SESSION['test'] = 5;}
    else
    {
      $_SESSION['test'] = "";
    }
    echo $_SESSION['test'];
?>
PS:关于做这些事情的顺序,你应该检查会话是否存在如果分配5,如果没有创建var并且什么都不分配......第一次执行这个脚本时不会显示任何内容,但是之后它会显示5.

Saludos;)