Независимые куки в разных папках

0

У меня есть три файла 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')
?>
Теги:
cookies
session
http

1 ответ

0

Вы можете установить альтернативный путь, вызвав session_save_path ($ path) перед вызовом session_start()

больше информации:

http://php.net/manual/ru/function.session-save-path.php

  • 0
    Да, я могу установить путь, но тогда у меня будет три куки с одинаковым именем на path2, два на path1 и один на базе. Я прочитал на stackoverflow.com/questions/4056306/… что это может вызвать несоответствие в некоторых браузерах. Я думаю, что session_name() может быть более подходящим, но я не уверен.
  • 0
    Хорошая идея! Используйте pair session_name () + session_save_path ($ path) перед session_start ()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню