За последние 24 часа нас посетили 58680 программистов и 1806 роботов. Сейчас ищут 840 программистов ...

Вопрос по сессиям

Тема в разделе "PHP для новичков", создана пользователем MCTrane, 15 апр 2011.

  1. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    У меня на сайте сессии, в них логин и пароль пользователя, примерно так выглядит:
    site.com/index.php
    PHP:
    1.  
    2. <?php
    3. //HTML шапки
    4. echo $_SESSION['login']; //Выводит логин
    5. ?>
    6. <iframe src ="http://site.com/patch/" width="900" height="900"> <!-- Это вывод iframe с того же сайта, только другая папка-->
    7.  
    site.com/patch/index.php
    PHP:
    1.  
    2. echo $_SESSION['login']; //не выводит логин
    3.  
    Можете подсказать почему в site.com/patch/index.php не выводит логин и сессия там вообще пустая?
     
  2. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    не помню точно, но нужно настраивать куки, чтобы действавали на весь сайт, а не на фиксированную директорию
     
  3. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    А где их настраивать?
     
  4. centnerik

    centnerik Активный пользователь

    С нами с:
    11 мар 2011
    Сообщения:
    32
    Симпатии:
    0
    а не может быть это от того, что во втором файле инициируется новая сессия? Хотя должно бы ошибку выдать.... Попробуй убрать во втором файле session_start()
     
  5. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    centnerik
    Так вообще NULL выводит.
    Gromo
    Я зашёл в папку через адресную строку, куки глянул, там сессия есть, но всёравно выводит пустой массив
     
  6. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    MCTrane
    можно поискать в гугле - там есть ссылки на это.

    но вначале проверь следующую теорию:

    1.
    PHP:
    1. <?php
    идёт самым первым в файле.

    2. Нет BOM заголовка у файла

    3. Проверь сессии на двух файлах в одной директории

    4. если всё вышесказанное соблюдено и работает - ищи в гугле как выставлять путь у кук для всего сайта.

    но мне кажется, что хватит и первых трёх шагов. четвёртый маловероятно.
     
  7. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    Конечно идёт первым. BOM не возможен, у меня кодировка windows 1251.
    Создал site.com/patch/test.php, там также пустой массив.
     
  8. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    И 4 тоже не вариант( Вывел $_COOKIE в site.com/patch/index.php, всё выводит, как и на site.com/index.php
     
  9. centnerik

    centnerik Активный пользователь

    С нами с:
    11 мар 2011
    Сообщения:
    32
    Симпатии:
    0
    Сессия вроде бы должна и без кук работать...
    Если сессия есть в куках, может есть смысл подключиться к ней через session_id($_COOKIE['PHPSESSID'])?
     
  10. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    centnerik
    Сессия работает, только она пустая.
     
  11. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    centnerik
    Пустую всёравно выводит(
    Как будто и на сайте она пустая, хотя там чётко выводит.
     
  12. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    MCTrane
    странно как-то. врядли дело в ифрейме - там должна быть та же сессия.
    если открываешь файл patch/index.php напрямую из браузера - показывает сессию?
     
  13. centnerik

    centnerik Активный пользователь

    С нами с:
    11 мар 2011
    Сообщения:
    32
    Симпатии:
    0
    По идее она пустая потому что в path/index.php просто стартует новая сессия. Посмотри выше последний пост, мож получится. Актуальный вопрос, может самому пригодиться. Надо разобраться
     
  14. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    Gromo
    Ну, не выводит тоже...


    centnerik
    убрал session_start, оставил только session_id($_COOKIE['PHPSESSID']), NULL стал выводить.
     
  15. centnerik

    centnerik Активный пользователь

    С нами с:
    11 мар 2011
    Сообщения:
    32
    Симпатии:
    0
    session_id попробуй вызвать без session_start во втором файле

    PS жалко я не на своем компе, так бы сейчас тоже экспериментировал, а то треплемся без толку )))
     
  16. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    MCTrane
    дело пахнет керосином. нужно разбираться с настройками сервера :)
    я тоже придерживаюсь мнения, что в patch/index.php у тебя стартует новая сессия, и проблема скорее всего в настройках пути кук
     
  17. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    Вот что в куках:
    array(2) { ["147f9964d93ba372955402f602050104"]=> string(32) "99cf303b9d8991642a8feac1108123e7" ["PHPSESSID"]=> string(32) "3810ea01c299d81656e3944e3a6f5859" }
    т.е., только одна сессия.
     
  18. centnerik

    centnerik Активный пользователь

    С нами с:
    11 мар 2011
    Сообщения:
    32
    Симпатии:
    0
    Получается что новая сессия просто перезатирает сессию в куках... В РНР кажется порядок обработки переменных есть типа GPCS ?
     
  19. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    Если бы она перезатиралась, то на сайте была бы тоже пустая сессия получается, а она такой же и остаётся...
    Порядок обработки, да, вроде GET, POST, Cookie, Server.
     
  20. centnerik

    centnerik Активный пользователь

    С нами с:
    11 мар 2011
    Сообщения:
    32
    Симпатии:
    0
    В первой файле сессия стартует и пишется в куки, во втором стартует и перезаписывает куки. А как все это в кучу слепить что то не думается. Мож просто отключить куки и попробовать без них ? Хотя это бред... )))
     
  21. centnerik

    centnerik Активный пользователь

    С нами с:
    11 мар 2011
    Сообщения:
    32
    Симпатии:
    0
    Google говорит что проблем не должно быть. Не понятно все это
     
  22. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    Вероятно ли, что CMS что-то мудрит? (Joomla)
     
  23. MCTrane

    MCTrane Активный пользователь

    С нами с:
    14 ноя 2009
    Сообщения:
    217
    Симпатии:
    0
    Ну, да, это и было из-за CMS, там может, как то по особенному сессии вкл или ещё что-то, но я решил скопировать из site.com/index.php
    PHP:
    1. <?php $mainframe =& JFactory::getApplication('site'); ?>
    Ну и чтобы эту функцию подключить надо ещё библиотеки грузануть перед тем, что выше, в общем вот общий код:
    PHP:
    1. <?php
    2. define( '_JEXEC', 1 );
    3. $jp = str_replace("/patch","", dirname(__FILE__));
    4. define('JPATH_BASE', $jp );
    5.  
    6. define( 'DS', DIRECTORY_SEPARATOR );
    7.  
    8. include ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
    9. include ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
    10. $mainframe =& JFactory::getApplication('site');
    11. ?>
    12.  
    Конечно, с такой фигнёй врятле кто столкнётся, но может найдётся избранный, как я)

    Всем спасибо!
     
  24. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    о ужас, джумла O_O
    она еще и сессии ломать умеет
     
  25. centnerik

    centnerik Активный пользователь

    С нами с:
    11 мар 2011
    Сообщения:
    32
    Симпатии:
    0
    MCTrane
    Проверил на своем компе, работает на ура... А джумлу даже в глаза не видел, думаю, немного потерял