|
|
|
| Имеется файл с именем hides.php, содержащий такой код:
<?php
ob_start();
session_start();
file_put_contents('ses.txt', session_id());
echo chr(13).chr(10) . '<script type="text/javascript" src="jquery.js"></script>';
echo chr(13).chr(10) . '<script type="text/javascript" src="grenada.php"></script>';
|
А в файле grenada.php содержится вот что:
<?php
ob_start();
session_start();
file_put_contents('ses2.txt', session_id());
|
Если запустить из адресной строки браузера файл hides.php, то в текствовых файлах 'ses.txt' и 'ses2.txt' увидим имена сессий. Эти имена будут одинаковые.
А теперь в html файл пишем код, подключающий hides.php
<?php include("hides.php"); ?>
|
Браузер закрываем и открываем заново, и вызываем из адресной строки html файл. И в текствовых файлах 'ses.txt' и 'ses2.txt' увидим имена сессий - они РАЗНЫЕ!
Например,
55cf170333547edc0fb75f7a45b55585 - 'ses.txt' '
542d86be1bc14bfc5ae546bae916a6c3 - 'ses2.txt'
|
Обновим html файл, не закрывая браузер. Получаем:
542d86be1bc14bfc5ae546bae916a6c3
542d86be1bc14bfc5ae546bae916a6c3
|
Какой-то тут сложный механизм взаимодействия с html файлом, понять который не удается!
(Попытка использовать в скрипте hides.php session_regenerate_id(); не дала результата). | |
|
|
|
|
|
|
|
для: Владимир55
(03.01.2012 в 13:24)
| | . | |
|
|
|
|
|
|
|
для: Владимир55
(03.01.2012 в 13:24)
| | >Браузер закрываем и открываем заново, и вызываем из адресной строки html файл. И в >текствовых файлах 'ses.txt' и 'ses2.txt' увидим имена сессий - они РАЗНЫЕ!
У меня одинаковые (и в ses.txt и в ses2.txt). Каким браузером смотрите, тестовый пример ничего кроме этого кода не содержит?
PS Может у вас и grenada.php кэшируется, перед экспериментом вручную почистите оба файла. | |
|
|
|
|
|
|
|
для: cheops
(03.01.2012 в 16:25)
| | Попробовал во всех браузерах, закрывая их полностью и запуская заново. И удаляя вручную тектовые файлы. Дефект наблюдался усточиво.
Но есть один нюанс - я подключал инклюд так:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>тест.</title>
<?php include("hides.php"); ?>
</head>
|
Если разместить до <html>, то дефект исчезает!
Похоже, что причиной всему именно это!
Можно ли избавиться от проблемы, сохранив include внутри <head> ? | |
|
|
|
|
|
|
|
для: Владимир55
(03.01.2012 в 19:53)
| | session_start() по определению должно быть ДО любого вывода. | |
|
|
|
|
|
|
|
для: elenaki
(03.01.2012 в 19:56)
| | Не факт. На то существует | |
|
|
|
|
|
|
|
для: Владимир55
(03.01.2012 в 20:26)
| | на каждый ob_start() должен быть свой ob_end_flush(); . а его что-то не видно | |
|
|
|
|
|
|
|
для: Владимир55
(03.01.2012 в 19:53)
| | >Но есть один нюанс - я подключал инклюд так:
Воспроизвел, все по прежнему - сессия совпадает (если честно, в моем понимании так и должно быть). Пока что-то в голову ничего разумного не приходит, чтобы предположить, почему у вас получаются разные значения.
[поправлено модератором: обсуждение функций управления буфером выделено в отдельную тему] | |
|
|
|