За последние 24 часа нас посетили 58594 программиста и 1813 роботов. Сейчас ищут 855 программистов ...

Проблема с SESSION

Тема в разделе "PHP для новичков", создана пользователем Sice, 27 фев 2012.

  1. Sice

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

    С нами с:
    16 фев 2012
    Сообщения:
    45
    Симпатии:
    0
    Не могу понять в чем проблема, код логина:
    Код (PHP):
    1. <?php
    2. require_once("inc/config.php");
    3. require_once("inc/func.php");
    4. require_once("lang/ru.php");
    5.  
    6. if($_POST['submit']){
    7.  $email = clear($_POST['email']);
    8.  $password = clear($_POST['pass']);
    9.     $sql = "SELECT email FROM users WHERE email='$email'";
    10.      $res = mysql_query($sql) or die(mysql_error());
    11.      if($rows = mysql_num_rows($res) > 0){
    12.          $token = sha1(md5($_SERVER['HTTP_USER_AGENT'].mktime().$email));
    13.         $sql = "UPDATE users SET token='$token' WHERE email='$email'";
    14.          mysql_query($sql) or die(mysql_error());
    15.         $_SESSION['token'] = $token; // ПОМЕЩАЮ ПЕРЕМЕННУЮ $token в СЕССИЮ
    16.             if($_POST['memory']){
    17.             setcookie("remember",$token,time() + 60 * 60 * 24 * 14);
    18.             }
    19.             header('Refresh: 3; URL=index.php');
    20.             die ('<br/><center>'.$lang[login_redirect].'</center>');    
    21.      }     
    22.      else{
    23.          $loginerror = $lang['login_error'];    
    24.      }
    25. }
    26. ?>
    Код, где проверяю залогинен или нет:
    Код (PHP):
    1.  <?php 
    2.     if(isset($_SESSION['token'])){
    3.         $_SESSION['token'] = $token;
    4.         $sql_a = "SELECT nick FROM users WHERE token='$token'";
    5.         $result_a = mysql_query($sql_a) or die(mysql_error());
    6.         $rows_a = mysql_fetch_assoc($result_a);
    7.         echo "Добро Пожаловать, <b>".$rows_a['nick']."</b><br>";
    8.         echo "<a href='login.php?logout'>Выйти</a>";
    9.     }else{    
    10.      ?>
    11.     <form name="login" action="login.php" method="POST">
    12.     <? echo $lang['index_email'] ?><input name="email" type="text" maxlength="25"> <? echo $lang['index_pass'] ?>
    13.     <input name="pass" type="text" maxlength="25"><br/>
    14.     <? echo $lang['login_memory'] ?><input type="checkbox" name="memory" id="memory"><br/>
    15.     <input name="submit" type="submit" value="<? echo $lang['index_input'] ?>">
    16.     </form>
    17.     <?php } ?>
    Выдается пустота, то есть из базы он ничего не тащит. Проблему нашел в том, что суперглобальный массив $_SESSION вообще пустой, сижу уже часа 2 не могу понять: Почему ?

    Второй кусок кода инклюдится из файла и там нету session_start, но в файле, в который инклюдится, он есть, я думаю ошибка не в этом. (пробовал и в этом файле (втором куске кода) писать session_start, но выдает ошибку).

    Спасибо заранее за помощь.
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    session_start(); надо ставить выше всего кода главной страницы куда все подключается и в других инклуженых файлов не надо писать session_start();.
     
  3. Sice

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

    С нами с:
    16 фев 2012
    Сообщения:
    45
    Симпатии:
    0
    мде) знал конечно, что session_start должен быть в начале странице, но инклюды меня как-то не смущали. Буду знать. Спасибо вам большое.
     
  4. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    Тут не в инклюдах дела, а в том, что где то может быть пробел ентер и т д
     
  5. Sice

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

    С нами с:
    16 фев 2012
    Сообщения:
    45
    Симпатии:
    0
    Да, об этом тоже в курсе. Проблема решена. Спасибо.