Q:

Авторизация только в одном браузере

Доброго всем времени суток, господа.
Давным давно сделал на своем сайте авторизацию по сессиям. Но глядя на сайте из инета, вижу, что сделал не все до конца. Авторизуемся на сайте, тут же заходим в другой браузер и авторизуемся из него. Далее перезагружаем первый браузер и: вы не авторизованы или авторизуйтесь плз.
Смысл понятен и правилен, при авторизации на другом компьютере / в другом браузере - авторизация в первом должна "слетать". Может ли кто привести пример такой авторизации по сессиям (в инете есть примеры - не спорю) но, чтобы как описал выше при авторизации на другом компьютере / в другом браузере - авторизация на первом "слетала", или сначала был переход, что "под вашим логином/пасом" уже кто-то сидит, а потом уже переход на страницу авторизации.
С кодом ошибиться боюсь, авторизация сами понимаете - дело серьезное. И ПОЛНЫЙ код, или правильный пример из инета был бы очень кстати. Помогите решить данную задачу. Заранее благодарен.
up. Благодарен за приведенные ниже примеры, но возникла проблемка:
Написанное выше применил. Насколько удачно - не знаю. Теперь если кто-то залогинился, то на другом компьютере/браузере под этим логином/пасом залогинеться уже нельзя. Что мне не хотелось. Мне хотелось авторизацию, при которой работать сможет только тот, кто залогинелся последним. Подскажите, где ошибся или код простейшей авторизации, где тех, кто залогинился НЕ последним, под одним логином/пасом - выкидывает.

A:

@Kite, хотел сказать вот так:
session_start();
 mysql_connect(DB_HOST,DB_USER,DB_USER_PASSWORD) or die(mysql_error());
 mysql_select_db(BD_NAME) or die(mysql_error());
 mysql_query('SET NAMES '.DB_CHARSET.'');
 ##Определяем константы для авторизаций
 define('USERS_TABLE','online_order_users');
 define('SID',session_id());

 ##Определяем функции
 //Функция выхода.
 //Пользователь считается авторизированым, если в сессии присутствует uid
 //см. "Действия - если пользователь авторизирован".
 function logout() {
     unset($_SESSION['uid']); //Удаляем из сессии ID пользователя
     die(header('Location: '.SITE_URL));
 }

 //Функция входа.
 //Все выбраные поля записываются в сессию.
 //Таким образом, при каждом просмотре страницы не надо выбирать их заново.
 //Для обновления информации из БД можно пользоваться этой же функцией - имя и пароль
 //хранятся в сессиях
 function login($username,$password)    {
     $result = mysql_query("SELECT * FROM `".USERS_TABLE."` WHERE `username`='$username' AND `password`='$password';")
         or die(mysql_error());
     $USER = mysql_fetch_array($result,1); //Генерирует удобный массив из результата запроса
     if(!empty($USER)) { //Если массив не пустой (это значит, что пара имя/пароль верная)
         $_SESSION = array_merge($_SESSION,$USER); //Добавляем массив с пользователем к массиву сессии

         mysql_query("UPDATE `".USERS_TABLE."` SET `sid`='".SID."',last=now() WHERE `uid`='".$USER['uid']."';")
             or die(mysql_error());
         return true;
     }
     else {
         return false;
     }
 }

 //Функция проверки залогинности пользователя.
 //При входе, ID сессии записывается в БД.
 //Если ID текущей сессии и SID из БД не совпадают, производится logout.
 //Благородя этому нельзя одновременно работать под одним ником с разных браузеров.
 function check_user($uid) {
     $result = mysql_query("SELECT `sid` FROM `".USERS_TABLE."` WHERE `uid`='$uid';") or die(mysql_error());
     $sid = mysql_result($result,0);
     return $sid==SID ? true : false;
 }

 ##Действия - если пользователь авторизирован
 if(isset($_SESSION['uid'])) { //Если была произведена авторизация, то в сессии есть uid

     //Константу удобно проверять в любом месте скрипта
     define('USER_LOGGED',true);
     //Создаём удобные переменные
     //Все поля таблицы пользователей записываются в сесси (см. стр. 35-37)
     //Таким образом, после добавления нового поля в таблицу надо дописть лишь одну строку
     $UserName = $_SESSION['username'];
     $UserPass = $_SESSION['password'];
     $UserID = $_SESSION['uid'];
 }
 else {
     define('USER_LOGGED',false);
 }

 ##Действия при попытке входа
 if (isset($_POST['login'])) {

     if(get_magic_quotes_gpc()) { //Если слеши автоматически добавляются
         $_POST['user']=stripslashes($_POST['user']);
         $_POST['pass']=stripslashes($_POST['pass']);
     }
     $user = mysql_real_escape_string($_POST['user']);
     $pass = mysql_real_escape_string($_POST['pass']);
     if(login($user,$pass)) {
         die(header("location: ".$_SERVER['REQUEST_URI']));
         //die('Вы успешно авторизировались!');
     }
     else {
         header('Refresh: 3;');
         die('
         <html>
         <head>
         <title>Password or Login incorrect!</title>
         </head>
         <body style="background-color:gray;">
         <h2 style="text-align:center;color:red;margin-top:200px;">PASSWORD or LOGIN FAILED!</h2> 
         <h3 style="text-align:center;color:yellow;margin-top:20px;">Redirecting...</h3>
         </body>
         </html>');
     }

 }

 ##Действия при попытке выхода
 if(isset($_GET['logout'])) {
     logout();
 }
 ?>

