使用session_id()和session_name

时间:2014-04-16 08:06:43

标签: php

我是PHP的新手。我在代码中管理会话所做的只是使用session_start()启动会话。我在网上阅读,session_idsession_name

session_idsession_name有什么用?基于应用程序,我们可以在哪里使用Php。中的session_namesession_id

我如何编写代码:

<?php
   session_start();
   if(isset($_SESSION['name']))
   {
       //Render the page.
   }
   else
   {
       session_destroy();
       //redirect to some simple page.
   }
?>

根据我的代码,我可以在哪里使用session_idsession_name。这是编写代码的好方式,还是应该选择使用session_idsession_name

谢谢。

1 个答案:

答案 0 :(得分:2)

会话名称是存储session_id的cookie / url param的名称。默认情况下,在创建会话时,通常会创建一个名为PHPSESSID的特殊cookie,session_id是后来标识您的cookie的值。您可以使用session_name更改默认会话名称,但必须在session_start之前调用session_name。希望有所帮助。

<强>编辑。

会话将向您的浏览器发送一个cookie,记住PHP配置为使用COOKIES作为会话管理。

创建cookie并将其发送到浏览器后,您可以像任何其他cookie一样访问它,如果您使用print_R($ _ COOKIE),您将看到php会话cookie及其值。

最低限度,您只需要调用session_start(),这将为您启动一个会话,必须在将任何输出数据发送到浏览器之前调用它。

例如,这会导致错误。

echo "Hello";
session_start(); 

这是因为必须在将任何输出发送到浏览器之前调用session_start()。 那么,为什么你需要session_name(),因为它允许你重命名cookie,正如默认会话名称所提到的那样是PHPSESSID。重命名会话可以减少黑客尝试查找名为PHPSESSID的cookie的机会。每个php开发人员都知道默认的会话cookie名称是什么,如果我是黑客,你认为我会首先寻找什么cookie?但这不是预防机制。

session_id(),只是为了获取会话的id,它并不总是被使用,它是为了方便而使用,如果你试图实现自己的会话管理,也可以使用,因为PHP允许你这样做。

简而言之,session_name或session_id不是启动会话所必需的。如果您还有其他问题,可以在我的google页面上关注我,

https://plus.google.com/113820735365251703271

我将很乐意进一步解释。