更改页面时会话var丢失

时间:2013-12-09 08:02:13

标签: php session

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

但是现在如果我导航到另一个页面,我就不再登录了...就像$ _session var没有正确保存一样......

我的部分问题出在我的服务器配置上。我通过更改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="

1 个答案:

答案 0 :(得分:0)

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