检查是否有会话而不使用session_start()

时间:2011-05-11 14:45:31

标签: php

嘿伙计们,这将是我在Stackoverflow上的第一个问题。

我想检查一个人是否有活动会话,并在有一个人时将其重定向到另一个页面。但是,我不想使用 session_start(),因为这会在个人电脑上放置一个cookie(我不想在他们没有登录时在人们的电脑上放置cookie)。有没有办法检查现有会话,而不在他们的PC上放置cookie?

提前致谢。

3 个答案:

答案 0 :(得分:7)

您可以检查是否存在会话ID cookie,如果之前已在您网站的其他位置设置,则客户端会将其发回:

if (isset($_COOKIE[session_name()])) {
   ... most likely there's a session available to be loaded ...
}

为了增加安全性,您可以使用session_save_path()session_name()检查是否存在会话文件(假设您使用的是基于文件的默认处理程序),以构建路径传递到file_exists()

答案 1 :(得分:2)

您可以检查函数session_id(),它将返回用户的当前会话ID,如果不存在会话,则返回空字符串:

if (empty(session_id())) {
  /* redirect or logic here here, example: */
  header('location:path/to/your/session/start/page');
  exit();
}

或者您可以检查会话cookie /全局变量是否已设置(isset($_SESSION)isset($_COOKIE[session_name()]session_id() here的文档

答案 2 :(得分:2)

首先测试一下,但我认为session_id() != ""如果有会话则会给出,如果没有,则为false。