Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как удалить первую сессию пользователя 
V
    Опции темы
v00d00
Дата 11.9.2009, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 28.12.2005

Репутация: нет
Всего: нет



Привет. Есть процедура регистрации
Вот она:
Код

<?php
$host="localhost"; // Host name
$user="root";
$dbpassword="12345";
$database="PHPServer";

$db_name="PHPServer"; // Database name
$tbl_name="users"; // Table name

if ( isset($_POST['username']) && isset($_POST['password']))
{
    $username=$_POST['username'];
    $password=$_POST['password'];

    // Connect to server and select databse.
    mysql_connect($host, $user, $dbpassword)or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");

    // username and password sent from form

    // To protect MySQL injection (more detail about MySQL injection)
    $username = stripslashes($username);
    $password = stripslashes($password);
    $username = mysql_real_escape_string($username);
    $password = mysql_real_escape_string($password);

    $sql="SELECT * FROM $tbl_name WHERE LOGIN='$username' and PASSWORD='$password'";
    $result=mysql_query($sql);

    // Mysql_num_row is counting table row
    $count=mysql_num_rows($result);
    // If result matched $myusername and $mypassword, table row must be 1 row

    if($count==1)
    {    
        session_start();
        if (isset($_SESSION["username"]) && $_SESSION["username"]==$username)
        {    
            session_destroy();
            die("DOUBLE_CON");
        }
        // Register $myusername, $mypassword and redirect to file "login_success.php"
        echo "LOGIN_OK";
         
        $_SESSION["username"]=$username;        
        //header("location:login_success.php");
    }
    else 
    {
        echo "LOGIN_BAD";
    }
}
?>


В текущей реализации 
Код

session_start();
        if (isset($_SESSION["username"]) && $_SESSION["username"]==$username)
        {    
            session_destroy();
            die("DOUBLE_CON");
        }


Удаляется новая сессия. Можно ли удалить как-нибудь старую сессию пользователя вместо новой?

P.S. по-моему я где-то коренным образом ошибся. Может вообще поменять принцип работы регистрации?

Это сообщение отредактировал(а) v00d00 - 11.9.2009, 17:31
PM MAIL   Вверх
NewDima
Дата 11.9.2009, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



Что значят "старая" и "новая" сессии?

Добавлено через 3 минуты и 35 секунд
и зачем производится процедура авторизации, но перед ней не проверяется, авторизован ли пользователь уже?
PM ICQ   Вверх
NLspieler
Дата 11.9.2009, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Код

if ($TWOE_USLOWIE)
{
     unset ($_SESSION) ; //удалить сессию
}
session_start(); //начать новую сессию

Т.е. нужно сначала удалить старую сессию, а только потом начать новую.

Это сообщение отредактировал(а) NLspieler - 11.9.2009, 20:05
PM MAIL   Вверх
v00d00
Дата 14.9.2009, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 28.12.2005

Репутация: нет
Всего: нет



Попробую описать ситуацию:

Пользователь провел авторизация с одной машины (IP yyy.yyy.yyy.yyy) . И получил доступ к сервисам сайта.
Затем он провел авторизацию с другой машины( IP xxx.xxx.xxx.xxx) . В это время нужно удалить сессию для машины (IP yyy.yyy.yyy.yyy). И разрешить доступ с нового IP адреса. 

Можно ли провести итерацию по текущим активным сессиям на сервере?

То NLspieler: Получается что я удалю еще не существующую сессию. 

To NewDima: Надеюсь так понятнее.

PM MAIL   Вверх
Ипатьев
Дата 14.9.2009, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Можно, но не нужно. Там еще чужие сессии могут быть.
Проще писать ид сессии в пользовательскую базу и по ней сверяться.
PM MAIL   Вверх
v00d00
Дата 14.9.2009, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 28.12.2005

Репутация: нет
Всего: нет



Ок, как убить сессию по ее ID )
 smile 


Это сообщение отредактировал(а) v00d00 - 14.9.2009, 12:51
PM MAIL   Вверх
capitan
Дата 14.9.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: 9
Всего: 13



v00d00,  какая задача стоит?  Разрешить пользователю работать только в 1 интерфейсе?  Про IP предположим понятно. А если он запустит 2 браузера на одной машине? IP будет один и тот же. 
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 14.9.2009, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



А ее не надо убивать "по id". 
Превентивно, просто на всякий случай, убивать не надо. Придет с устаревшей сессией - тогда и прибьется. 

capitan, значит, будет работать только в одном браузере.
PM MAIL   Вверх
v00d00
Дата 14.9.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 28.12.2005

Репутация: нет
Всего: нет



То captain: Да. Задача стоит в том что нужно запретить более одного рабочего места для одного пользователя


To Ипатьев. Ясно, отличная идея. Я бы не догадался. Займусь реализацией)
PM MAIL   Вверх
capitan
Дата 17.9.2009, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: 9
Всего: 13



v00d00,  копать нужно в сторону Local Shared Object
http://www.mihas.net/thema1193.htm
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 17.9.2009, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



capitan, здесь совсем другая задача.
Совсем не обязательно браузеры будут запущены на одной и той же машине.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0588 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.