如何获取/设置session_id()或者应该自动生成它


How to get/set session_id() or should it be generated automatically?

在我的应用程序中有一些基本的会话处理。在每个页面中,我检查用户是否已登录。如果它们是,那么它们已经被$_SESSION['user_id']识别,并且它们的登录/注销记录在MySQL表中。

我还想根据唯一的id记录客人(未登录)的访问。我假设一旦session_start()被调用,内部的session_id就会自动生成,并且调用session_id()我可以检索它。但这只是给出了一个"未定义的变量"错误,所以我想我必须手动设置它…?如果是,那么最好的方法是什么,使它成为唯一的ID,或者通常的方法是什么?

在PHP中有两种使用会话和会话id的方法:

1 -自动生成会话ID并获取它:

session_start();
$id = session_id();

2 -手动设置会话ID,然后启动会话:

session_id( 'mySessionId' );
session_start();

如果你打算设置会话ID,你必须在调用session_start()之前设置它;如果你打算生成一个随机的session_id(或继续一个已经在前一个页面请求中开始),然后得到这个id在其他地方使用,你必须调用session_start() 尝试使用session_id()检索会话id。

在这里你可以看到它为我工作(会话是默默地启动的):http://sandbox.phpcode.eu/g/f6b6b.php

忘记启动会话,可能是

这可能有点奇怪,但当我需要唯一的ID时,我使用uniqid()