Непонятно работают сессии.

Pack

Новичок
Непонятно работают сессии.

Добрый день. У меня такая проблемка. Есть код:

PHP:
if (@$_REQUEST['admenter']) {
           if ($_REQUEST['admlogin'] == "1" && ($_REQUEST['admpass'] == "1")) { 
               session_start();              
               $_SESSION['ses'] = "ok";      
               Header("Location: ".dirname($_SERVER['SCRIPT_NAME'])."/index.php?".session_name().'='.session_id());    
               exit();    
           } else {     
               Header("Location: http://{$_SERVER['HTTP_HOST']}{$_SERVER['SCRIPT_NAME']}");      
               exit(); 
           }   
       } else {
           require_once "admindex.php";    
       }
В файл index.php, на который отправляется пользователь в случае верных login и password, включается ещё один файл, который и отвечает за формирование страницы в случае $_SESSION['ses'] = "ok";. Как я понимаю, сессия должна автоматически передаваться в файл index.php, но этого не происходит. Работает всё лишь если я дописываю в файл index.php строку session_start();. Но ведь сесии в этом файле, и во всех, включённых в него, уже должна быть запущена?.. Или я что-то где-то недопонял? Помогите, пожалуйста, разобраться.
 

Pack

Новичок
zerkms
То есть во всех скриптах, если им передано управление через Header "Location"? Если подключаю файл require_once, то не надо или тоже вызывать?

-~{}~ 23.03.08 16:34:

Просто везде приводится пример с переадрессацией на эту же страницу (в основном со счётчиком), так что не совсем понятно...
 

zerkms

TDD infected
Команда форума
Pack
не важно как ты попал на скрипт, через редирект или по переходу на ссылке
чтобы сессии заработали тебе нужно вызвать session_start();

так или иначе - ссылку уже дали, читай
 

Pack

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

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Ты программист или кто?
Что мешает попробовать?
session_start();
var_dump(session_id());
session_start();
var_dump(session_id());
?


Только вот объяснить зачем тебе понадобилось стартовать сессию в каждом инклюде
можешь объяснить?
 

Фанат

oncle terrible
Команда форума
Этому красавчику надо бы сначала понять, чем отличается "передача управления" через Header "Location", от require_once.
А потом уже с сессиями разбираться.
А то с таким багажом он долго будет фтыкать туда, где "ничего по его вопросу не написано"

-~{}~ 24.03.08 22:45:

Ссылку читал. Там по моему вопросу нет ничего.
Для того, чтобы иметь доступ к переменным сессии на любых страницах сайта, надо написать ТОЛЬКО ОДНУ(!) строчку в самом начале КАЖДОГО файла, в котором нам нужны сессии:
session_start();
альтернативно одаренный
 

dimagolov

Новичок
*****, но приведенная цитата не раскрывает, а можно даже сказать запутывает в вопросе, в начале каких файлов надо ставить строчку session_start. правда, это только для тех, кто не понимает что делают директивы include|require[_once], но все равно, "каждый файл, в котором нам нужны сессии" ИМХО немного неудачное определение
 

Фанат

oncle terrible
Команда форума
фак на танке этажом выше

-~{}~ 24.03.08 23:12:

Культурные люди пишут не "по моему вопросу ничего нет", а "я ничего не понял".
 

Фанат

oncle terrible
Команда форума
Да, это правда. Некоторые не умеют читать и считать.
 
Сверху