Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как проверить существования сессии
 
 автор: Alba   (15.01.2007 в 13:53)   письмо автору
 
 

Здравствуйте.
Подскажите пожалуйста ка проверить запущена ли сессия, т.е. вызывалась ли функция session_start()?

   
 
 автор: mindless   (15.01.2007 в 14:02)   письмо автору
 
   для: Alba   (15.01.2007 в 13:53)
 

isset($_SESSION['name']);

   
 
 автор: Киналь   (15.01.2007 в 14:10)   письмо автору
 
   для: mindless   (15.01.2007 в 14:02)
 

Думаю, правильнее будет проверить session_id().

   
 
 автор: Sergey89   (15.01.2007 в 14:12)   письмо автору
 
   для: Киналь   (15.01.2007 в 14:10)
 

Ыыы... опередил мну =(

   
 
 автор: Alba   (15.01.2007 в 14:16)   письмо автору
 
   для: mindless   (15.01.2007 в 14:02)
 

Спасибо, но мне нужно не это.
Нужно проверить вызывалась ли функция session_start().
Имеются подключаемые модули, подключается сразу несколько модулей, в разном порядке в зависимости от ситуации. В каждом из них нужно сделать проверку на запуск сессии, т.е. если в первом модуле сессия уже запущена, то в остальных уже не надо использовать session_start()...
На деюсь ясно изложил.

Тут идея пришла, если я буду проверять вот так:

if(!isset($_SESSION)){
    session_start();
}


нормально будет?
вроде работает, но правильно ли так проверять?

   
 
 автор: Sergey89   (15.01.2007 в 14:19)   письмо автору
 
   для: Alba   (15.01.2007 в 14:16)
 

Ошибочка. Так делать не надо!
<?php
if (!session_id()) {
    
session_start();
}
?>

т.к. session_id() нужно вызвать после сессии.

   
 
 автор: Sergey89   (15.01.2007 в 14:11)   письмо автору
 
   для: Alba   (15.01.2007 в 13:53)
 

<?php
session_start
();

if (
session_id()) {
    print 
'уже запущена';
}
?>

   
 
 автор: Alba   (15.01.2007 в 14:19)   письмо автору
 
   для: Sergey89   (15.01.2007 в 14:11)
 

>
<?php
>session_start();
>
>if (
session_id()) {
>    print 
'уже запущена';
>}
>
?>


Спасибо, то что нужно.

   
 
 автор: mishaMC   (17.01.2007 в 11:48)   письмо автору
 
   для: Alba   (15.01.2007 в 13:53)
 

Не нужно писать своих функций, когда есть существующие...


http://ru.php.net/manual/ru/function.session-is-registered.php

   
 
 автор: Sergey89   (17.01.2007 в 13:38)   письмо автору
 
   для: mishaMC   (17.01.2007 в 11:48)
 

Ты бы хоть прочитал, что делает данная функция ;-). Плюс к этому:
>> If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(),
>> session_is_registered() and session_unregister().

   
 
 автор: Natusia   (22.01.2007 в 11:43)   письмо автору
 
   для: Sergey89   (17.01.2007 в 13:38)
 

немного продолжила эксперемент

<?php 
session_start
(); 

if (
session_id()) { 
    print 
'уже запущена session_id: ';
    print (
session_id());
}

session_destroy();
    print 
'<br><br>session_id: ';
    print (
session_id());
?>

Вроде все работает, сессия начата - выводит ID, сессия разрушена - не выводит...

только если перезагрузить страницу, session_id не изменяется. Получается можно бесконечно создавать одинаковые сессии? Как сделать чтобы прикаждом заходе на страницу генерился уникальный id?

пример тут http://koni.nov.ru/test/session_id.php

   
 
 автор: Sergey89   (22.01.2007 в 20:29)   письмо автору
 
   для: Natusia   (22.01.2007 в 11:43)
 

Он и не должен менятся при обновлении. Меняется при открытии нового окна браузера. Если необходимо генерировать новый ИД каждый раз заного, то нужно перегрузить механизм обработки сессий.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования