2012-08-13 58 views
0

我是PHP新手,并且之前没有使用会话,我已经阅读了一些内容,了解他们的工作以及我应该如何使用它们。Php会话不能正确创建

但是,当我创建会话时,它似乎创建会话正常(代码运行,如果我查看cookie,我可以看到来自我的网站的条目) 我也可以在同一页面上设置$ _SESSION值,但只要我进入一个不同的页面,会话似乎重置。

这里是我的代码:

$sessionid = md5(uniqid(microtime()) . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']); 
ini_set('session.auto_start', 1); 
ini_set('session.lifetime', 2678400); 
ini_set('session.use_cookies', 1); 
ini_set('session.cache_limiter', 'private_no_expire'); 
session_start($sessionid); 

// Also tested that setting these doesn't give an error either 
$_SESSION['Username'] = //Code to get username 
$_SESSION['UserID'] = // Code to get userID 

echo "<script language='Javascript'>"; 
echo "window.location='" . $forwardpage . "';"; 
echo '</script>'; 
exit(); 

任何帮助将appereciated

回答

3

的问题是,每一次你加载创建一个新的会话ID和发送到客户端脚本。 跳过$ sessionid变量,php会为你生成一个sessionid,它会起作用。

因此,使用session_start()没有$ SessionID的

+0

嗯,这是我做到了在第一,这是当它没有工作,所以我想也许如果我创造我自己的ID,但它仍然没有工作。 – user1071461 2012-08-13 09:26:52

+0

通常,PHP会话的默认设置很有用。你有没有尝试删除ini_set()变量,并尝试在顶部只有一个简单的session_start()? – Henkealg 2012-08-13 09:30:29

+0

只需添加到此,如果您想重新生成会话标识,就像上面所做的一样,请使用session_regenerate_id();开始会话后重新生成ID并保持会话不变。 – MarkR 2012-08-13 09:41:15