会话不能正常使用PHP

时间:2010-07-15 17:33:57

标签: php session

我的网站在访问时没有开始会话,我不知道为什么,但我的网站是这样的:

<?php

session_start(); 

$title = "Home"; 

include("include/header.php");
include("include/functions.php"); 

?>

...HTML stuff here...

<?php 

include("footer.php"); 

?>

但是当我查看Cookies(Firefox附加组件)时,没有开始会话...我使用了session_regenerate_id();但它根本不起作用。

由于没有会话,因此无法登录,我的网站中没有任何session_destroy(),仅在注销时。

但有趣的是,当我登录时(尚未刷新或导航)然后点击退出按钮,我的网站上有一个会话,然后当我再次登录时,它告诉我我已登录但如果我登录并导航或刷新,它不会告诉我我已经登录,因为没有会话...

注销:

<?php

session_start();
session_destroy();

setcookie("cookie-name", "", time()-60, "", "", 0);

header("Location: ../index.php");

exit;

?>

我该怎么办?

4 个答案:

答案 0 :(得分:3)

您必须在每个正在访问的文件的开头都有session_start()并使用会话。该名称具有误导性,session_start()实际上无法启动会话,但初始化 PHP会话管理。

答案 1 :(得分:1)

不确定它是否相关,但有一个奇怪的PHP怪癖要求SESSION_START()位于<?php标记正下方的行上。关于空白和会议之上的额外事情的事情曾经让我变得混乱。我最近一直在使用Zend,这避免了它自己的会话处理系统的问题。

您可以尝试执行print_r($ _ SESSION)以查看会话数组中是否有任何内容。

答案 2 :(得分:1)

这可能是因为你没有在你给出的任何一个例子中设置会话,你必须有一个如下所示的行来实际创建一个会话,然后在你需要的所有后续页面上访问会话变量在session_start();

$_SESSION['example'] = 'something';

答案 3 :(得分:1)

它看起来不像你在会话或cookie中设置任何内容。

如果你想在会话中传递信息,你需要在$ _SESSION变量中分配必要的值。

例如,您可以在主页上执行以下操作:

<?php
session_start();
$_SESSION['myVariable'] = "my text";
?>

然后在任何后续页面上,您都可以访问您设置的变量。

<?php
session_start();
echo $_SESSION['myVariable'];  //This will print "my text"
?>