PHP session_start()

时间:2010-10-25 14:48:02

标签: php session

这到底是什么?

它是否基于Cookie启动当前会话?从PHP网站获得。 PHP如何控制会话?如果我在用户打开登录页面时启动会话,我甚至可以使用该会话?我可以使用当前会话获取有关登录用户的信息吗?

5 个答案:

答案 0 :(得分:22)

PHP会话系统允许您将数据安全地存储在$_SESSION全局数组中。典型的示例是在用户输入密码时将用户的标识符存储在会话中:

if ($user = try_login($login, $password)) 
  $_SESSION['user'] = $user;

然后,您可以在所有其他页面上访问该信息:

if (isset($_SESSION['user']))
  // logged in !
  echo user_name($_SESSION['user']);

数据存储在服务器上,因此不存在篡改的风险(另一方面,请注意磁盘使用情况)。

启动会话时,当前请求将使用$_SESSION。如果这是用户的第一次访问,则该数组将为空,并且将为您发送新的会话cookie。

关闭会话只会阻止当前请求使用$_SESSION,但数据会保留在下一个请求中。

销毁会话会永远丢弃所有数据。会话在最后一次访问后(通常约30分钟)被销毁一段时间。

答案 1 :(得分:11)

我假设你想知道PHP会话对你来说意味着什么,程序员。

当你执行session_start()时,你告诉PHP你想要使用会话。这可以作为名为$ _SESSION的数组使用。您可以像使用任何其他数组一样使用它,区别在于您放在那里的东西从一个页面到另一个页面(如果您在每个页面的开头使用session_start())。

实际机制可能因配置(php.ini)而异,但典型安装可以使用cookie进行会话。假设您的网络服务器在Linux上并且您正在使用cookie。您执行以下操作

session_start();
$_SESSION['name']='Bob';

当PHP看到它时会创建一个带有半随机名称的文本文件(例如sess_a3tfkd5558kf5rlm44i538fj07),将$ _SESSION内容作为纯文本粘贴在那里,然后将cookie发送给具有会话ID的用户,这可以是用于查找会话文件(例如a3tfkd5558kf5rlm44i538fj07)。

下次用户回来时,他会在他的cookie中输入会话ID,PHP会转到相关文件并在$ _SESSION中加载其内容。

您会注意到实际信息保留在服务器上,而用户只有id。有点像在俱乐部递上你的外套并拿到一张带有号码的票。

答案 2 :(得分:3)

PHP的session_start启动或恢复HTTP会话,本文对此进行了相当详细的解释:

http://en.wikipedia.org/wiki/Session_(computer_science)

HTTP“会话”的概念并非特定于PHP,它在许多(所有?)服务器端HTTP框架中使用,作为允许某些状态在不同请求/响应之间存储/关联的一种方式(因为HTTP是无状态的)。唯一令牌(通常但不总是存储在cookie中)标识特定客户端,并且服务器可以关联“会话”。

以下是有关会话和PHP的更多信息,特别是可能会有所帮助:http://www.php.net/manual/en/book.session.php

答案 3 :(得分:2)

就像手册中所述

  

session_start()根据通过GET或POST请求传递的会话标识符创建会话或恢复当前会话,或通过cookie传递。

如果您在登录页面开始新会话,则会话最初为空。您可以随意存储,例如,在用户登录后存储用户ID。会话数据在您关闭会话时会被销毁。

您可能需要阅读Session Extension Manual Pages中的所有章节,另请参阅

答案 4 :(得分:0)

您可以将PHP会话与cookie进行比较,但会话是存储信息的更安全的方式。 Cookie将数据存储在用户的计算机上,但会话存储在服务器上的一个临时文件中。 我已经讨论了会话以及如何在我的博客文章How to start a PHP session, store and accessing Session data?

上使用它

下面是在PHP会话中存储数据的示例代码:

<?php
session_start();
$_SESSION["name"] = "John";
?>

以下是重新审核会话数据的示例:

<?php
session_start();
echo $_SESSION["name"];
?>

上面的代码将显示名称“John”。

来源:How to start a PHP session, store and accessing Session data?