У меня есть три файла index.php
в трех разных папках, где каждая папка (кроме базы) является дочерней в другой папке. Каждый файл должен иметь свой собственный массив $_SESSION
и не должен быть перезаписан другим путем/файлом.
Я просто предположил, что это будет так, однако, создал следующий тестовый скрипт и нашел, что это не так.
Я также обнаружил, что cookie сеанса, связанный с каждым путем, является доменом "myDomain.com" и "/".
Каков наилучший способ гарантировать, что файлы в дереве каталогов имеют свой собственный сеанс?
/var/www/html/main.php
<ul>
<li><a href="/testing/cookies">base</a></li>
<li><a href="/testing/cookies/path1">path1</a></li>
<li><a href="/testing/cookies/path1/path2">path2</a></li>
</ul>
<?php
session_start();
echo('<h1>'.$name.'</h1>');
echo('<pre>'.print_r($_SESSION,1).'</pre>');
$_SESSION['test']=$name;
?>
/var/www/html/index.php
<?php
$name='/';
require('main.php')
?>
/var/www/html/path1/index.php
<?php
$name='/path1';
require('../main.php')
?>
/var/www/html/path1/path2/index.php
<?php
$name='/path1/path2';
require('../../main.php')
?>
Вы можете установить альтернативный путь, вызвав session_save_path ($ path) перед вызовом session_start()
больше информации:
session_name()
может быть более подходящим, но я не уверен.