За последние 24 часа нас посетили 17747 программистов и 1658 роботов. Сейчас ищут 947 программистов ...

Проблема с сессиями - header()

Тема в разделе "Вопросы от блондинок", создана пользователем DZEN, 9 сен 2008.

  1. DZEN

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

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Суть происходящего скрыта от моего понимания поэтому обращаюсь к гуру. Опишу примерные шаги.
    1). Есть файл начальный 'index.php' на котором выставляется $_SESSION['info'], помощью формы отправляются данные на файл "db.php".
    2). В файле "db.php" в зависимости от $_SESSION['info'] выполняются определенные дейсвия.
    3). Создаются дополнительные переменные для сессии, к примеру $_SESSION['div'] = 'someinfo'.
    4). Далее запускается функция header("Location:eek:k.php?div=".$_SESSION['div']."");
    5). Происходит редирект на "ok.php?div=someinfo", но в сессии есть лишь самый первый $_SESSION['info'] и никаких других.

    Примечание: $_SESSION['div'] в примере передается и как $_GET только чтобы было понятно что перед вызовом header() такая переменная 100% существует.
     
  2. QQQ

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

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    догонять тонкости твоего алгоритма ломает..

    но я не увидел вопроса. так в чём проблема?
     
  3. DZEN

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

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Тонкости не тонкости, но с нуля переписывать чужое мне не хочеться ( да и времени не особо :) )
    Проблема в том что в 5 шаге теряются переменные сессии кроме тех что были объявлены до попадания в скрипт "db.php".
     
  4. QQQ

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

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    ваще так не должно быть..

    код можешь выложить?
     
  5. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Хотелось бы взглянуть на код
     
  6. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Кстати вопрос, а почему данные передаются в массиве $_SESSION?
    Почему не $_POST (если форма с данными), или не $_GET ?
     
  7. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    И код неплохо было бы выложить.....
     
  8. DZEN

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

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Код мега проблемно, даже не столько что код нельзя вылаживать, там 2 Мб + база 14 Мб. Но сам факт что весь код убирался в "ok.php" и в самом начале уже нет остальных переменных сессии, и в "db.php" тоже куча кода убиралась. Да и зачем что-то убирать или проверять в коде если 4 шаг прекрастно отрабатывает и пишет сессии в адресную строку.

    Содержимое "db.php"
    PHP:
    1.  
    2. <?php
    3.     session_start();
    4.     // много кода :)
    5.     $_SESSION["div"] = 2008;
    6.     header("Location:ok.php?div=".$_SESSION['div']."");
    7.     exit();
    8. ?>
    9.  
    Содержимое "ok.php"
    PHP:
    1.  
    2. <?php      
    3.     session_start();
    4.     print_r($_SESSION);
    5.     print_r($_GET);
    6. ?>
    7.  
    ok.php выводит только одну сессию из index.php и $_GET['div']
    Вот собственно и все...
     
  9. QQQ

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

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    session_start() в db.php
     
  10. nimistar

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

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    DZEN могу тока session_write_close посоветовать перед екзитом :-( ... может сам неуспевает ??
     
  11. DZEN

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

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Да, кстати сервак мега перегружен :)

    Нет, ничего не получилось...
     
  12. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    А для каких это все целей??
     
  13. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    А если

    PHP:
    1. <?php
    2. header("Location:ok.php?div=".$_SESSION['div']);
    3. ?>
    Что будет?
     
  14. DZEN

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

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    В одном из сотни подключаемых файлов была вот такая строка session_name("main");
    Короче говоря даже в чужом чудо коде можно разобраться.

    Кстати не спроста у меня в конце двойные кавычки, точно не могу сказазать, но помню, что при определенных обстоятельствах в call_user_func строка передается пустой если переменные не закрыть кавычками. Где-то в недрах моего винчестера даже остался этот скрипт, главное что привычка осталась.
     
  15. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Да просто я как-то столкнулся примерно с такой проблемой -
    закрывал переменную кавычками, а скрипт отказывался работать.
    А если кавычки убрать, то все нормально было....

    Кстати, этот скриптик не пошаришь на винте?
    Мне так, чисто для своего интереса - чтобы потом, если что, шишки не набивать - посмотрю, что там такое может быть.
     
  16. DZEN

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

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Да, всякое бывает для состояния "я в астрале".
    Скрипт искать очень не хочеться, так как кода немеряно :wink:.
    Главное знать факт в чем может быть ошибка.