теори системы авторизации пользователей

wanderer

PHP - rulez!...
теори системы авторизации пользователей

народ, хелп...!
я вот пишу форум (не буду вдоваться в подробности очему он мне нужен, тк. дело не в этом) и уже доделал движок (читать, записывать) и столкнулся с траблом:
как сделать хороший сабж (токо без теории), мне надо типа системы на этом форуме, с куками и прочим. расскажите плиз теорию что да как, плиз..
З.Ы. если че не понятно - извиняюсь, не хотел..
 

Hijacker

Guest
Я тут щас тоже форумом балуюсь...движок где-то у меня на середине...но мысли уже мучают такие же...по маленьку задумываюсь...надо поболтать об этом...да и народ может что скажет...есть же люди писавшие этот форум...
 

psix

Guest
session

Используйте сессии, о них вы можете почитать на этом сайте
 

Hijacker

Guest
Re: session

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

KOTEHOK

Guest
Самое главное что бы человек после того как он прошел не сложную регистрацию (логин, пароль и мыло) как можно реже мучался с введением пароля. Тоесть жизнь сессии должна быть просто ограмменой. Пусть он сам позже введет свои аську, фото, и имя собаки.Главное его не напрягать без его желания. Потом хорошо бы сделать внутреннюю почту, продумать сиситему оповещения на email об ответах (настраиваемую). Хороша возможность переходить из режима веток в режим списка. Не навязывайте пользователю фреймы.
Хорошо бы покропеть над яваскрипт и сделать что нибудь интеррактивно-приятное на стороне клиента вроде неперезагружающегося дерева или визуального редактора текста (ворд конечно писать не стоит... ) или вообще сделать все конфеткой включая технологию чатов без рефреша со всякии значками online-offline итп.
 

psix

Guest
Re: Re: session

Originally posted by Hijacker

Вот мальчик то умный попался....
Не груби.
Пишу более подробный ответ.
При входе пользователя смотришь есть ли у него сессия, если нет то просишь авторизоваться, например все пароли логины храняться в MySQL. Он пишет логин пароль, проверяешь, если он совпал, то записываешь в сессию, что он авторизован, например $s["auth"] = true;

//Начало сессии
unset($s);
session_start();
session_register("s");

Далее на каждой странице, где не авторизованый пользователь не может находиться, проверяешь это знаечение if($s["auth"] == true). если совпало пускай работает, если нет то выкидываешь, например на авторизацию. И еще, перед сессией нельзя ничего на экран выводить, даже пробел. Так как сессии по умолчанию храняться в файлах, то в настройках сервера надо указать какое время после закрытия они будут храниться, например до закрытия браузера.
Если что то не понятно или такой вариант не подходит - пиши.
 

Hijacker

Guest
Ну ты нас за проффанов держишь......
я лучше буду хранить в сессии ID пользователя, чтоб сразу было понятно что это за перец, а по твоему для анонимусов доступ вообще перекрывается....
а если бы ты ещё внимательнее прочитал бы...то понял бы суть вопроса, а ты нам начинаешь толковать про вещи которые....ну не знаю.....ты этакие вещи начинающим рассказывай....

>:-0 извиняюсь за тон
 

psix

Guest
Ну хорошо. Давай поподробнее. Где что непонятно. Постараюсь ответить. Пошагово расскажи что надо.
 

Hijacker

Guest
мне надо типа системы на этом форуме, с куками и прочим. расскажите плиз теорию что да как, плиз..
З.Ы. если че не понятно - извиняюсь, не хотел..

Вот как товарищ спросил, тут всё понятно....если нет...сори
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Hijacker
мне надо типа системы на этом форуме, с куками и прочим. расскажите плиз теорию что да как, плиз..
З.Ы. если че не понятно - извиняюсь, не хотел..

Вот как товарищ спросил, тут всё понятно....если нет...сори
Посмотри модуль Auth из PEAR, разберись как он работает. Потом либо используй его в своём проекте либо напиши по образцу.

А алгоритм веб-аутентификации с использованием сессий(блоксхемку ещё может нарисовать, ась?), тебе тут вряд ли разжёвывать будут.
 

tony2001

TeaM PHPClub
2 Hijacker:
>мне надо типа системы на этом форуме, с куками и прочим.
>расскажите плиз теорию что да как, плиз..
вот он тебе и начал с самого начала!
в чем проблема? в понимании сессий?
или надо пересказать мануал?
ты спрашиваешь элементарные вещи и обижаешься, когда тебе их начинаются объяснять.
я, честно говоря, так и не понял что ты хочешь узнать.
 

Hijacker

Guest
вот за такое спасибо.....ща гляну...
мысли то у меня есть....всё понятно, а схемок не надо....не надо схемок
Я так вообще сюда сунулся...чтоб понять как другие лабают.
У меня своё есть, но в форуме хотел по другому....вообщем не важно.....за линк спасибо
 

tony2001

TeaM PHPClub
м-да
с высказыванием своих мыслей у тебя определенно есть проблемы.
 

Hijacker

Guest
4 tony2001
Мне всё понятно...с пхп не первый день, не первый месяц работаю...
С сессиями и всем прочим всё понятно =). Мануал пересказать??? - не надо, есть у самого =). Я же не спрашиваю как с ссесиями работать или с кукисами.
Речь просто зашла про логику работы. Насколько я понял wanderer про это спрашивал, а так как и я скоро дойду до этого в своём форуме то просто и заговорил. Но заговорил про логику работы, а не про то что использовать. Так ведь??? А то что И так понятно что сессия, и так понятно что кукисы.
Просто, как я вижу, вопрос не поняли, и начили постить используй то, используй сё...

Вообщем напостили в форум, а смыслу мало....жаль
 

Hijacker

Guest
А с высказыванием мыслей нормально, просто сижу на работе и отвлекаюсь постоянно
=)
 

tony2001

TeaM PHPClub
>Речь просто зашла про логику работы.
Если ты понимаешь что такое сессии и как они работают, то ты должен понимать и как с ними работать.
Логика работы - стандартная, т.е. проверка переменных в сессии.
В чем у тебя проблема я так и не понял.
 

Hijacker

Guest
Я сразу сказал что всё понятно....но может что и услышал бы о чём не подумал, не додумал сам....
 

wanderer

PHP - rulez!...
извините, что мня долго не было - инет кончился, гулял...
ну я в принципе сделал, не знаю хорошо - нет, смотрите (извиняюсь за объём):
PHP:
session_start();
session_register("user", "logined");
$user = array();
$user["name"] = "UnRegistered";
$user["stat"] = "unreg";
$user["cookie"] = 0;
$user["show_mes"] = $show_mes;
$user["place_show"] = $place_show;
$user["date_format"] = $date_format;
$user["redirect"] = array("go"      => $redirect["go"],
                          "seconds" => $redirect["seconds"],
                          "page"    => $redirect["page"]
                         );
unset($redirect);

if ($do != "logout") {
  if (($user_name != "" and $user_pass != "") or !empty($logined)) {
    $user_b = file($users_base);
    $user_f = array();
    $user_f["find"] = 0;
    for ($c = 0; $c < count($user_b); $c++) {
      list($_name,
           $_pass,
           $_cookie,
           $_javascript,
           $_city,
           $_email,
           $_showemail,
           $_url,
           $_icq,
           $_avatar,
           $_stat,
           $_globalstat,
           $_showmes,
           $_placeshow,
           $_rg,
           $_rs,
           $_rp,
           $_dateformat
          ) = split("::", $user_b[$c]);
      if ($_name == $user_name) {
        $user_f["find"] = 1;
        if ($_pass == $user_pass) {
          $user_f["login"] = 1;
          $user_f["c"] = $c;
        } else {
          $user_f["login"] = 0;
        }
      }
    }
    if ($user_f["find"] and $user_f["login"]) {
      list($_name,
           $_pass,
           $_cookie,
           $_javascript,
           $_city,
           $_email,
           $_showemail,
           $_url,
           $_icq,
           $_avatar,
           $_stat,
           $_globalstat,
           $_showmes,
           $_placeshow,
           $_rg,
           $_rs,
           $_rp,
           $_dateformat
          ) = split("::", $user_b[$user_f["c"]]);
      $user["name"] = $_name;
      $user["pass"] = $_pass;
      $user["cookie"] = $_cookie;
      $user["javascript"] = $_javascript;
      $user["city"] = $_city;
      $user["email"] = $_email;
      $user["show_email"] = $_showemail;
      $user["url"] = $_url;
      $user["icq"] = $_icq;
      $user["avatar"] = $_avatar;
      $user["stat"] = $_stat;
      $user["global_stat"] = $_globalstat;
      $user["show_mes"] = $_showmes;
      $user["place_show"] = $_placeshow;
      $user["date_format"] = $_dateformat;
      $user["redirect"] = array("go"      => $rg,
                                "seconds" => $rs,
                                "page"    => $rp,
                               );
      $logined = 1;
    } else {
      $logined = 0;
    }
    unset($user_b);
    unset($user_f);
  }
  if ($user["stat"] != "unreg") {
    if ($user["cookie"]) {
      setcookie("user_name", $user["name"], 2 * time());
      setcookie("user_pass", $user["pass"], 2 * time());
    } else {
      setcookie("user_name", $user["name"]);
      setcookie("user_pass", $user["pass"]);
    }
  }
} else {
  session_destroy();
  setcookie("user_name", "", 2 * time());
  setcookie("user_pass", "", 2 * time());
  $user_name = "";
  $user_pass = "";
  unset($user);
  $user = array();
  $user["name"] = "UnRegistered";
  $user["stat"] = "unreg";
  $user["cookie"] = 0;
  $user["show_mes"] = $show_mes;
  $user["place_show"] = $place_show;
}
а потом проверяю: если $user["stat"] != "unreg", то делаем что-то... и тд...
З.Ы. много тк. из скрипта выдрал
З.З.Ы. а спрашивал именно про логику работы!
З.З.З.Ы спасибо всем за ответы!!
 

tony2001

TeaM PHPClub
правила форума прочти, плз.

З.Ы. больше кода не мог прислать "на проверку" ?
 
Сверху