页面加载的PHP会话变量
我试图在页面加载之间保存变量值。页面加载的PHP会话变量
我认为下面的代码在第一次用户点击页面时不会显示任何内容。下一次应该显示数字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
session.save_path(/ var/php_sessions)目录是可写的。我看到你没有使用tmp目录,所以我问这个。
session.use_trans_sid应为0 - 如果启用“use_trans_sid”,则会话标识每次都附加到URL上。我不确定ajax请求会发生什么,但我认为它会被附加到。
这是有点冲突使用session.use_only_cookies作为1和session.use_trans_sid作为1,因为use_only_cookies指定模块是否将只使用cookie来存储会话ID在客户端。
/var/php_sessions不存在,我也无法创建它。这看起来像我需要问我的虚拟主机。谢谢。 – w0lf42 2013-03-19 19:41:06
进行测试,您可以将其指向您的服务器上的可写目录,例如:session_save_path('/ home/example.com/my_sessions'); ini_set('session.gc_probability',1);或ini_set(session.save_path,'/ path/to/your/folder')http://php.net/manual/en/function.session-save-path.php – 2013-03-19 19:43:39
可写目录是问题所在。 – w0lf42 2013-03-19 19:53:00
你可以尝试以下方法:
<?php
session_start();
if (!isset($_SESSION['test'])) {
$_SESSION['test'] = 0;
}
echo $_SESSION['test'];
$_SESSION['test'] = 5;
?>
我试过了。不幸的是,这不起作用。 – w0lf42 2013-03-19 19:25:28
$_SESSION['test'];
我觉得这条线是创建$ _SESSION数组中的新元素用钥匙'test'...因为没有赋值,所以它的值为0.
尝试将其更改为
if(!array_key_exists('test', $_SESSION)) {
$_SESSION['test'] = 5;
}
事情是这样的??:
<?php
session_start();
if(isset($_SESSION['test']))
{$_SESSION['test'] = 5;}
else
{
$_SESSION['test'] = "";
}
echo $_SESSION['test'];
?>
PS:它的所有做这些事情的顺序,你应该检查会话是否存在分配5,如果不能创造var和分配没什么......你第一次执行这个脚本不是要显示什么,但后来它会显示5
Saludos;)
评论第3行$ _SESSION ['test']; – Ateszki 2013-03-19 19:20:20
@Ateszki虽然这条线很可能不是OP想要做的,但它不应该成为问题。 – PeeHaa 2013-03-19 19:22:00
我知道,这只是一个评论,清理代码,使事情更容易调试 – Ateszki 2013-03-19 19:25:50