Как получить / установить session_id () или он должен быть сгенерирован автоматически? - PullRequest
6 голосов
/ 15 августа 2011

В моем приложении есть базовая обработка сессий.На каждой странице я проверяю, вошел ли пользователь в систему. Если это так, то он уже идентифицирован $_SESSION['user_id'], и его вход / выход регистрируется в таблице MySQL.

Я также хотел бы записывать посещения (не авторизованные) гостями на основе уникального идентификатора.Я предполагал, что после вызова session_start() автоматически генерируется внутренний session_id и что при вызове session_id() я могу получить это.Но это просто приводит к ошибке «неопределенная переменная», так что я думаю, мне нужно установить ее вручную ..?Если так, то как лучше всего, чтобы это был уникальный идентификатор, или каков обычный метод?

Спасибо за любую помощь ...

Ответы [ 3 ]

30 голосов
/ 15 августа 2011

Существует 2 способа использования сессий и идентификаторов сессий в PHP:

1 - автоматически сгенерировать идентификатор сеанса и получить его:

session_start();
$id = session_id();

2 - установить идентификатор сеанса вручную, а затем запустить его:

session_id( 'mySessionId' );
session_start();

Если вы намереваетесь установить идентификатор сеанса, вы должны установить его до вызова session_start (); Если вы намереваетесь сгенерировать случайный session_id (или продолжить тот, который уже был запущен в предыдущем запросе страницы), а затем получить этот идентификатор для использования в другом месте, вы должны вызвать session_start() до того, как попытается используйте session_id() для получения идентификатора сеанса.

1 голос
/ 15 августа 2011

Здесь вы видите, что это работает для меня (сеанс запускается без вывода сообщений): http://sandbox.phpcode.eu/g/f6b6b.php

Вы забыли начать сеанс, вероятно

0 голосов
/ 15 августа 2011

Ну, это может быть немного странно, но когда мне нужен уникальный идентификатор, я использую uniqid ()

...