我对PHP会话几乎没有疑问。希望尽快得到答案。
如果我只使用会话而不创建任何cookie。会话是否自动在客户端浏览器中创建cookie?
如何知道会话ID?它是由开发人员创建的,还是每个创建的会话都由id引用?
如果我要破坏会话,在销毁之前我是否要删除我从未在我的网站上编写代码的cookie? (因为我只需要创建一次登录,可能会在一年内像选举一样。所以我不需要在客户端存储用户信息。)
如果我的代码为$_SESSION['user']='xxx'
,当'yyy'登录时,会话数据是否存储在服务器中,$_SESSION['user']
会被'yyy'取代吗?
我怎么知道,我的网站可以同时处理多少用户?这与我如何管理会话有什么关系吗?或服务器流量?
我在某处读到会话也可能被劫持。因此建议在数据库中存储会话而不是在服务器中存储/ tmp。如何在数据库中存储会话?是否有任何特定的过程,或者我们必须像经典方式一样继续,在创建会话时编写要插入的查询,在会话被销毁时删除它?
提前感谢。
答案 0 :(得分:4)
PHP默认使用cookie。如果在调用session_start()
时不存在会话cookie,则会为您创建一个会话cookie(假设满足各种条件,例如在session_start()调用之前没有执行任何输出)。
session_id()
如果你正在做自己的会话处理程序,那么你负责创建/更新/删除会话数据。
答案 1 :(得分:3)
答案: -
1)。是的,名称为“PHPSESSID”或“在php.ini中为sesssion设置默认名称”。
2)。您可以在session_id()
函数的帮助下了解会话ID。
3)。是的,如果你愿意,也可以。我如何推荐销毁会话
if(session_id() == '' || !isset($_SESSION)) {
session_start();
}
session_unset();
session_destroy();
session_write_close();
setcookie(session_name(),'',0,'/');
session_regenerate_id(true);
4)。否每个不同的用户在会话文件夹中都有不同的会话存储。
5)。取决于...服务器空间和会话大小。 [仅供参考,会话作为文件存储在您的服务器中,并从那里引用],所以它有争议回答这个问题。
6)。会话可以被劫持,如果你的主机在1个文件夹中提供所有站点会话,你最好更改你的主机,而我推荐的启动会话方式如下: -
if (session_start()) {
$exp = "7200"; // set your expiry time, here 60*60*2 = 7200 i.e, 2 hour
setcookie('PHPSESSID', session_id(), time()+$exp, '/', null, null, true);
}
上面发生了什么,代码,您实际上是用httpOnly覆盖您的会话名称和值,并确保您的系统中的“TraceEnable”已关闭。这使得你的Cookies偷窃几乎不可能。