Проблема Проблема с авторизацией на сайте

Тема в разделе 'PHP', создана пользователем Илья Карлеоне, 3 фев 2012.

  1. Илья Карлеоне Новичок

    Такая беда, форма входа есть на каждой странице сайта, если я захожу в свой аккаунт с главной страницы (index.php), то авторизация работает нормально и на всех страницах я появляюсь как авторизованный. Если я зашел в полное описание новости к примеру, (mysite.ru/category/php/write/1/), и ввел данные авторизации на этой странице, то только на ней я появляюсь как авторизованный пользователь, на остальных страницах меня опять просит ввести логин и пароль. В чем проблема? Прикладываю код, он инклудится на каждой странице сайта.


    PHP:
        session_start();
        
    //Проверка на авторизацию
        
    if (isset($_COOKIE['l']) && isset($_COOKIE['i']))
        {
          
    $id_user $_COOKIE['i'];
          
    $login_user $_COOKIE['l'];
          
    $ip_user $_COOKIE['ip'];
        }
        
    //Авторизация
        
    if(isset($_REQUEST['ok']))
        {
          
    //Получение данных из формы
          
    if($_SERVER['REQUEST_METHOD'] == 'POST')
          {
              
    $l_login clearData($_POST['l_login']);
              
    $l_password hash('sha1'mysql_real_escape_string(trim(strip_tags($_POST['l_password'])))); 
          }
     
          
    //Запрос на получение данных пользователя
          
    $query_login "SELECT * FROM users WHERE login='$l_login' AND
     
        password='
    $l_password'"$query_answer mysql_query($query_login); $logIn mysql_fetch_array($query_answer);
     
          
    //Объявляем нужные переменные
          
    $browser $_SERVER['HTTP_USER_AGENT'];
          
    $time time();
          
    $id_user $logIn['id_user'];
          
    $pass_user $logIn['password'];
          
    $login_user $logIn['login'];
          
    $ip_user getenv("REMOTE_ADDR");
     
          if(
    $l_login == $login_user AND $l_password == $pass_user)
          {
              
    setcookie('ip'md5($user_ip), time() +3600*24);   
              
    setcookie('l'$login_usertime() +3600*24);
              
    setcookie('i'$id_usertime() +3600*24);
              
    $_SESSION['login'] = $login_user;
              
    $_SESSION['id'] = $id_user;
              
    mysql_query("INSERT INTO session (id_user,time,ip,browser) VALUE
     
        ('
    $id_user','$time','$ip_user','$browser')"); }
     
          if(
    $_POST['remember'] == 'on')
          {
              
    setcookie('ip'md5($user_ip), time() +3600*24*7); 
              
    setcookie('l'$login_usertime() +3600*24*7);
              
    setcookie('i'$id_usertime() +3600*24*7);
          }
          echo 
    "<html><head><meta    http-equiv='Refresh' content='0;
     
        URL=/index.php'></head></html>"
    ; }
  2. Илья Карлеоне Новичок

    Извиняюсь, проблема решена... умные мысли почему-то приходят когда ложишься спать. С утра переписал заново страницу новостей и всё заработало :)
    Admin нравится это.
  3. Admin Админ

    Ну можно сюда решение и выложить, чтобы другим помочь впоследствии.
  4. Илья Карлеоне Новичок

    Я думаю ни у кого такая проблема не возникнет. Всё произошло из-за моей невнимательности.
    Все страницы моего сайта, за исключением страницы с подробным описанием новостей, были написаны с учетом шаблона MVC. В странице с подробным описанием новостей было всё накидано в один файл, то бишь php код, обращение к базе, различные выводы и т.д. После того, как я структурировал страницу по типу MVC, всё стало работать прекрасно.

Поделиться этой страницей