Вы не зашли.
Главная » PHP » авторизация $_COOKIE
#31. Gemorroj On (107)
Administrator
2011.04.10 14:02
там просто проблема с тем, что папка переполнялась.
#32. tipsun Off (19)
Moderator
2011.04.10 14:02
Понял. СПС.
В след раз в ману лезть буду...
#33. tipsun Off (19)
Moderator
2011.04.10 16:04
Вот shit, поговнокодить не дают... http://phpfaq.ru/sessions
#34. Nu3oN Off (11)
Moderator
2011.04.10 21:09
Зачем так мудрить? чем обычный подход к этому делу не устроил?
Я буду лучше голоден, но между креслом и рулем и на дороге.
#35. tipsun Off (19)
Moderator
2011.04.10 23:11
Не, ну там написано типа для гостей не надо сессию начинать, как я понял.
Не надо старые сессии продолжать при получении куков, а стартовать новую с данными юзера.
- - - -
А если так делать, то надо в базу лезть.
И если даже для гостей сессию не начинать, то как captcha будет работать.
В принципе в этой сессии кроме ид, статуса и каптчи ниче не хранится у меня.
- - - -
Я в принципе писал, что пока не разбираюсь в этих делах, но хочу разобраться.
Там пример тоже приводится в конце статьи...
Отредактировано tipsun (2011.04.10 23:11)
#36. tipsun Off (19)
Moderator
2011.04.11 22:10
Заблудился я совсем...
#37. tipsun Off (19)
Moderator
2011.04.12 14:02
Набросок

Код:
<?php
 
$db mysql_connect('localhost''root''');
      mysql_select_db('tsb',    $db);
      mysql_set_charset('utf8'$db);
 
//типа авторизовался...
if(isset($_GET['auth']))
  {
    Session_Start();
    
    //Когда логин и пароль подошли, из базы достаем...
    $_SESSION['id']   = 1//пока просто для теста.
    $_SESSION['team'] = 1//пока просто для теста.
    $_SESSION['ip']   = $_SERVER['REMOTE_ADDR'];
    /////
    mysql_query("UPDATE `users` SET `ip`='".$_SERVER['REMOTE_ADDR']."', `remember`=1 WHERE `id`=1 LIMIT 1;"$db);
    //типа нажал запомнить
    //у меня там в говнокоде заносится и ip и browser
 
    SetCookie('REMEMBER'1$_SERVER['REQUEST_TIME'] + 86400'/');
    //типа нажал запомнить
 
    header('Location: http://'.$_SERVER['HTTP_HOST']);
    exit;
  }
 
//в шляпе... не кролик...
if(isset($_COOKIE['PHPSESSID']))
  {
    Session_Start();
    
    if(isset($_COOKIE['REMEMBER']) AND $_SESSION['ip'] != $_SERVER['REMOTE_ADDR'])
    {
      $query mysql_query("SELECT `id`, `team` FROM `users` WHERE `ip`='".$_SERVER['REMOTE_ADDR']."' AND `remember`=1 LIMIT 1;"$db);
      //если типа нажал запомнить
 
      if(mysql_num_rows($query))
      {
        //не надо начинать старые сессии, ну ладно не будем...
        
        //Удаляем старую сессию. Можно и оставить, сервер удалит...
        Session_Destroy();
        //Удаляем её ключ
        unset($_COOKIE['PHPSESSID']);
        
        //Стартуем новую сессию
        Session_Start();
        
        $array mysql_fetch_array($queryMYSQL_ASSOC);
        
        $_SESSION['id']   = $array['id']; //Из базы будет извлекаться...
        $_SESSION['team'] = $array['team']; //Из базы будет извлекаться...
        $_SESSION['ip']   = $_SERVER['REMOTE_ADDR'];
        
        header('Location: http://'.$_SERVER['HTTP_HOST']);
        exit;
      }
      else
      {
        //переадресация на страницу авторизации.
      }
    }
    else
    {
      //переадресация на страницу авторизации.
    }
  }
?>
Отредактировано tipsun (2011.04.12 15:03)
#38. Gemorroj On (107)
Administrator
2011.04.12 16:04
перед тем как делаешь session_destroy сделай еще и $_SESSION = null;
и пиши имена функций с маленькой буквы не  Session_Destroy, а  session_destroy.
а вообще не вижу смысла делать session_destroy, а затем сразу же делать session_start.
#39. DarkDaNTe Off (11)
Участник
2011.04.12 19:07
Код:
<?php
unset($_COOKIE['PHPSESSID']);
?>
и почитай как удалять куки еще
#40. tipsun Off (19)
Moderator
2011.04.12 20:08
Спс всем. Буду еще думать.

Подумал:
Код:
<?php
 
$db mysql_connect('localhost''root''');
      mysql_select_db('tsb',    $db);
      mysql_set_charset('utf8'$db);
 
//типа авторизовался...
if(isset($_GET['auth']))
  {
    session_start();
    
    $_SESSION['id']   = 1//пока просто для теста.
    $_SESSION['team'] = 1//пока просто для теста.
    $_SESSION['ip']   = $_SERVER['REMOTE_ADDR'];
    /////
    mysql_query("UPDATE `users` SET `remember`=1 WHERE `id`=1 LIMIT 1;"$db);
    SetCookie('REMEMBER'1$_SERVER['REQUEST_TIME'] + 86400'/');
    
    header('Location: http://'.$_SERVER['HTTP_HOST']);
    exit;
  }
 
if(isset($_COOKIE['PHPSESSID']))
  {
    session_start();
    
    if(isset($_COOKIE['REMEMBER']) && $_SESSION['ip'] != $_SERVER['REMOTE_ADDR'])
    {
      $query mysql_query("SELECT `id`, `team` FROM `users` WHERE `ip`='".$_SERVER['REMOTE_ADDR']."' AND `remember`=1 LIMIT 1;"$db);
      
      if(mysql_num_rows($query))
      {
        $_SESSION null//чистим, чтоб потом чистый файл был :)
        session_regenerate_id(true); //ну тут собстЭнна я и упал с велосипеда...
 
        $array mysql_fetch_array($queryMYSQL_ASSOC);
        
        $_SESSION['id']   = $array['id']; //Из базы будет извлекаться...
        $_SESSION['team'] = $array['team']; //Из базы будет извлекаться...
        $_SESSION['ip']   = $_SERVER['REMOTE_ADDR'];
        
        header('Location: http://'.$_SERVER['HTTP_HOST']);
        exit;
      }
      else
      {
        //session_destroy(); - надо или нет пока не знаю...        
        //переадресация на страницу авторизации.
      }
    }
    elseif(!isset($_COOKIE['REMEMBER']) && $_SESSION['ip'] != $_SERVER['REMOTE_ADDR'])
    {
      //session_destroy(); - надо или нет пока не знаю...        
      //переадресация на страницу авторизации.
    }
    
    //или просто продолжаем, если все нормально.
  }
?>
Отредактировано tipsun (2011.04.12 22:10)
Страниц: 1 2 3 4 5 612 Все
Главная
WEB
PunBB Mod v0.6.2
0.015 s