Я хочу установить другой идентификатор сеанса в зависимости от того, в какой папке находится пользователь.
Например, у меня есть домен https://example.com, который имеет папки / app1, / app2 и т. Д., А затем несколько файлов внутри каждой папки приложения. Я хотел бы установить один идентификатор сеанса, который будет использоваться со всеми файлами в приложении 1, и другой идентификатор сеанса, который будет использоваться в приложении 2.
Это можно сделать?
Задайте путь в файле cookie сеанса session_set_cookie_params
. До session_start
конечно.
Если /app1
и /app2
содержат полностью несвязанные приложения, вы можете /app2
совершенно несвязанные сеансы как с помощью функции session_name()
, так и функции PHP. Как правило, сеансы работают с файлом cookie под названием PHPSESSID
. Вместо этого в /app1
вы можете запускать session_name('session_app_1')
а в /app2
вы можете запускать session_name('session_app_2')
. Теперь сеансы в двух приложениях будут полностью не связаны.
Предупреждение: в документации PHP говорится, что функция session_name()
стоит дорого. Возможно, оставьте сеанс с именем по умолчанию в более занятом приложении и переименуйте его только в более тихое приложение.
u может использовать идею о том, что $_SESSION
var является массивом:
$_SESSION['app1'] = ... $_SESSION['app2'] = ... //etc etc
Я не уверен, что я правильно понял проблему, но вы можете попробовать проверить, будет ли она в app1, app2 и т. Д., А затем получить часть интересующей вас строки и использовать ее для установки сеанса , например, с помощью $_SERVER['REQUEST_URI']
или $_SERVER['SCRIPT_NAME']
.
Если вы уже это делаете, и ваша проблема в том, что он просто не установит сеанс?
Настройка session_save_path для разных каталогов будет служить вашей цели. Например, вы можете установить его в подкаталог в каждом каталоге, т. Е. относительный путь. В противном случае для совместного использования сеансов между каталогами установите session_save_path на один и тот же полный путь. Работает на меня..