我正在尝试在页面加载之间保存变量值。
我认为下面的代码在用户第一次点击页面时不会显示任何内容。下一次应显示数字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
答案 0 :(得分:3)
session.save_path(/ var / php_sessions)目录是否可写。我看到你没有使用tmp目录所以我问这个。
session.use_trans_sid应为0 - 如果启用“use_trans_sid”,则会话ID每次都附加到URL。我不确定ajax请求会发生什么,但我认为它会被附加到。
使用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;)