За последние 24 часа нас посетили 18793 программиста и 1594 робота. Сейчас ищут 1133 программиста ...

как оставить сессию

Тема в разделе "PHP для новичков", создана пользователем leon2009, 11 июн 2024.

Метки:
  1. leon2009

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

    С нами с:
    1 янв 2015
    Сообщения:
    104
    Симпатии:
    0
    Здравствуйте! переходя по ссылкам сессия исчезает (название), что я делаю не так?
    PHP:
    1. php
    2. session_id(sssssiiii);
    3. echo session_id();
    4. echo '    <a href="index.php?rem=11">1111</a><br><br><br><br>
    5.        <a href="index.php?rem=22">2222</a><br><br><br><br>
    6.        <a href="index.php?rem=33">3333</a><br><br><br><br>';      
    7. $rem = $_GET['rem'];
    8.  
    9. switch($rem)
    10. {
    11. case '11' :
    12.         $file  = '1.php'; echo $file; include '1.php';
    13. break;
    14.  
    15. case '22' :
    16.         $file  = '2.php'; echo $file; include '2.php';
    17. break;
    18.  
    19. case '33' :
    20.         $file  = '3.php'; echo $file; include '3.php';
    21. break;
    22.  
    23. default:
    24.         $file  = '1.php';
    25.         echo $file;
    26. break;
    27. }
    28. if (isset($_POST))
    29. {
    30. $login_send= substr(htmlspecialchars(trim($_POST['login'])), 0, 41);
    31. $pass_send = substr(htmlspecialchars(trim($_POST['password'])), 0, 41);
    32. $test=$login_send;
    33. }
    34. function test()
    35. {
    36.    
    37.     global $test;  
    38.  
    39. }
    40.  
    41.     $_SESSION['star'] = $test;
    42.     echo "=========".$_SESSION['star']."=========";
    43.  
    44.  
    45. ?>
    файл 1 2 3
    PHP:
    1. echo '11111111111111111111111111111111111';
    2. echo "<a href='index.php'>index 11111</a><br><br><br><br>";
    3. echo $_SESSION["star"];
     
  2. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    425
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Добрый день!
    Здесь sssssiiii - константа, которая не определена.
    В актуальной версии PHP будет выдаваться ошибка.
    PHP:
    1. session_id(sssssiiii);
    По умолчанию session_id передаётся через Куки.
    Посмотрите в консоле браузера переменную PHPSESSID,
    например, значение 8e706315a718631d0759a7b3a33fcb2b
    session_id( )
    нужно убрать.
    Удачи!
     
  3. leon2009

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

    С нами с:
    1 янв 2015
    Сообщения:
    104
    Симпатии:
    0
    убирал начинаешь бегать по ссылкам и сессия пропадает
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.854
    Симпатии:
    748
    Адрес:
    Татарстан
    не надо бегать.. надо адекватно ходить )))
    в вашем коде - нигде не меняется сессия, ничего не задается... с чего вы взяли что она пропадает... ее изначально нет
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
    Здравствуй. А вот как код написали, не думая чего делая, так и радуемся результату
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.105
    Симпатии:
    1.243
    Адрес:
    там-сям
    Ошибка в строке 2 приводит к выводу предупреждения. А любой вывод выключает возможность задавать заголовки, в т.ч. устанавливать куки, а значит и сессию.

    https://en.wikipedia.org/wiki/HTTP_message_body#HTTP_message - матчасть как устроено сообщение http: заголовки, затем тело
    https://stackoverflow.com/q/8028957/272885 - подробно о проблеме "Header alerady sent"
    https://phpfaq.ru/debug - как находить ошибки
    --- Добавлено ---
    Если по-простому, session_start() должен идти первым, до любого вывода, до любой ошибки. И он должен вызываться на каждой странице по которым вы "бегаете". Только в этом случае сессионные переменные будут доступны на этих страницах.