会话var在更改页面时丢失


session var is lost when changing page

我在我的网站上进行了自定义登录,并通过$_SESSION变量管理登录的用户。我的问题在登录操作后附加。在下一页上,我控制登录信息,如果一切正常,我将连接的用户id保存在$_SESSION['currentUser'] = serialize($successUser);中。

但现在,如果我导航到另一个页面,我将不再登录。。。就像$_session变量没有正确保存一样。。。

我的部分问题在于我的服务器配置。我通过更改php.ini中的session.save_path来更正它。

但现在我的问题仍然存在于我的一个web应用程序中。所以某个地方出现了编码错误。有人能帮我查一下吗?这是我的代码:

每一页都以开头

<?php
include('includes.php');
//page header
include("header.php");?>
<header class="sheet">
  <h1>About...</h1>
</header>
<p>Lorem Ipsum...

includes.php:

<?php //includes.php
session_start();
//includes classes
require_once 'classes/User.php';
require_once 'classes/Event.php';
require_once 'classes/Address.php';
....
//Globale vars
$currentUser = (isset($_SESSION['currentUser']))?unserialize($_SESSION['currentUser']):NULL;
//Includes services
require_once 'services/SrvCRUD.php';
require_once 'services/SrvCRUD_User.php';
...
require_once 'services/SrvFct_User.php';
require_once 'services/SrvFct_Address.php';
require_once 'services/SrvFct_Event.php';
...
//pages actions
include('page_actions.php');

header.php:

<!DOCTYPE html>
<html>
  <head>
    <title>...</title></head><body>
...

谢谢你的帮助。

p.S:我在网上搜索了很多关于我的问题,我已经检查了当前的错误,比如<?php session_start()...之前的空白。如果我var_dump我的$_SESSION,它表明我的变量在下一页上不存在。。。

编辑:由于这个问题似乎是一个配置问题,下面是我的php.ini 的会话部分

[Session]
session.save_handler = files
session.save_path = /home/users/***complete-path-censored***/tmp
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = Off
session.bug_compat_warn = Off
session.referer_check =
session.entropy_length = 0
session.entropy_file = /dev/urandom
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 1
session.hash_function = 0
session.hash_bits_per_character = 4
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="

好的。。。正如CBroe所说,我正在序列化数据。我很想知道是否真的有必要序列化对象,所以我进行了搜索。我了解到,会话会自动序列化对象,但必须在session_start()之前声明类才能正确地取消序列化。我做了这个简单的更改来改进我的代码,出于我无法理解的原因,这个更改也解决了我的问题。。。不知道为什么。我刚刚删除了un-serialize方法,并在会话开始前声明了模型。。。如果有人知道原因,我很想知道:)?!!感谢大家的帮助和建议