在我的应用程序中有一些基本的会话处理。在每个页面中,我检查用户是否已登录。如果它们是,那么它们已经被$_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()