За последние 24 часа нас посетили 24475 программистов и 1656 роботов. Сейчас ищут 882 программиста ...

Сохранение переменных сессий

Тема в разделе "PHP для новичков", создана пользователем kowapos, 18 янв 2013.

  1. kowapos

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

    С нами с:
    18 янв 2013
    Сообщения:
    120
    Симпатии:
    0
    всем привет. знакомлюсь с сессиями, и начал делать регистрацию / авторизацию, но тут восстала проблема. после успешной авторизации, создаются переменные сессий, но на след страницах они уже удалены. читал в нэте, был вариант в шапке вместе со стартом сессии вот это
    Код (Text):
    1. if(ini_get('session.use_trans_sid') != 1)
    2.     {    
    3.     ini_set('session.use_trans_sid', 1);
    4.     }
    5. session_name('sid');
    6. session_start();
    но оно все равно не помогает.
    вот скрипт авторизации. если заметили говно, будьте добры - исправьте
    Код (Text):
    1. <?
    2.     $action = $_GET["action"];
    3.  
    4.     if ($action = "authorized")
    5.         {
    6.             $name = htmlspecialchars(trim($_POST["login"]));
    7.             $pass = htmlspecialchars(trim($_POST["pass"]));
    8.                
    9.                 $query = mysql_query("SELECT * FROM `mv_users` WHERE `name` = '$name'");
    10.                 $row = mysql_fetch_array($query);
    11.                     {
    12.                         if ($row["password"] == $pass)
    13.                             {
    14.  
    15.                                 $_SESSION["id_user"] = $row["id"];
    16.                                 $_SESSION["name_user"] = $row["name"];
    17.                                
    18.                                    
    19.                             }
    20.                             else {echo '<div class= "error">Пароли не совпадают</div>';}
    21.  
    22.                     }
    23.  
    24.         }
    25.  
    26.  
    27.  
    28.     if(!isset($_SESSION["id_user"]))
    29.         {
    30.             echo '<div class = "right">
    31.                 <form action="login.php?action=authorized" method = "post">
    32.                     <input type="name" name = "login"> <br>
    33.                     <input type="password" name = "pass"><br>
    34.                     <input type="submit" value = "Войти" name = "ok">
    35.                 </form>
    36.             </div>';
    37.         }
    38.         else {echo '<div class = "complete">Добро пожаловать, вы вошли как <b>'.$_SESSION["name_user"].'</b>. Перейти в <a href = "#">профиль</a>, на <a href = "/">Главную</a></div>';}?>
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    session_start(); в самое-самое начало надо ставить
     
  3. kowapos

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

    С нами с:
    18 янв 2013
    Сообщения:
    120
    Симпатии:
    0
    если так
    Код (Text):
    1. session_start();
    2. if(ini_get('session.use_trans_sid') != 1)
    3.     {    
    4.     ini_set('session.use_trans_sid', 1);
    5.     }
    6. session_name('sid');
    то ошибка Warning: ini_set() [function.ini-set]: A session is active. You cannot change the session module's ini settings at this time in

    если так
    Код (Text):
    1. session_start();
    2.  
    3. session_name('sid');
    то все равно не сохраняется
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    первый кусок оставь так как есть и ставь его целиком в самое начала скриптов, но не тех, которые иклюдятся. =) а в тот самый первый, который вызывается.
     
  5. kowapos

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

    С нами с:
    18 янв 2013
    Сообщения:
    120
    Симпатии:
    0
    я так и делаю.
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    хз, должно работать тогда.
    в скрипте авторизации я не вижу где у тебя стартует сессия. но если стартует - должна работать.
     
  7. kowapos

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

    С нами с:
    18 янв 2013
    Сообщения:
    120
    Симпатии:
    0
    там вверху самом приинклюден файл, в котором стартует сессия

    Добавлено спустя 4 минуты 26 секунд:
    может в php.ini чет надо?

    Добавлено спустя 3 минуты 38 секунд:
    я баран, простите, все работает. при выводе переменной писал $_SESION["user_name] букву S пропустил
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Бывает =)