[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выбить пользователя со страницы
Страницы: 1, 2
mvg
Цитата (Godwarlock @ 8.11.2014 - 20:31)
У меня есть окно авторизованного пользователя где указаны его данные вытаскиваемые из бд. Суть проблемы состоит в том, что я могу зайти на аккаунт пользователя с любой страницы браузера, то есть, через каждую вкладку, при авторизации пользователя, открывается страница с его данными и таким образом я могу с любого компьютера производить действия на одном аккаунте. Собственно вопрос, как выбить предыдущего зашедшего пользователя со страницы с его данными и авторизовать только того, кто только что авторизовался? Есть ли какой-нибудь наиболее простой способ/пример?

Это что-то похожее на вы вошли одновременно с 2х устройств. Возможно ваш аккаунт взломан?

Мне кажется что похожие системы опрашивают клиента на предмет его состояния он-лайн и если появляешься сразу 2 раза он-лайн - это проблема.

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

1) Надо взвесить стоит ли такая безопасность такой системе.
2) Придумывать варианты исходя из того, что умеет делать система и какая безопасность уже придумана.

В общем дело не на 5 минут.
mvg
Цитата (Godwarlock @ 9.11.2014 - 13:41)
I++
А как получить id сессии?

Самому сгенерировать. Однако!

Лучше в бд записывать ай-пи. Если ай-пи другой возвращать авторизацию нул.
Godwarlock
mvg
Хорошо. Допустим это так. В прочем в этом я не вижу сложности, я вижу сложность только в том, как обнулить запись в бд, после того как пользователь покинул страницу, грубо говоря просто закрыл вкладку в браузере и после этого запись в бд с полем айпишника должна обновиться, чтобы пользователь снова смог зайти в систему, иначе его старый айпишник там так и будет висеть. А не у всех пользователей статичный айпи, у большинства он динамичный. Я просто не знаю как в коде выполнить условие, если пользователь закрывает браузер/покидает страницу.
Kusss
	// Во время авторизации записать в куку или сессию id пользователя
// и обновить в таблице пользователя номер сессии.

// Если была авторизация

if (!empty($_COOKIE['login_id'])) { // или $_SESSION['login_id']
$id = (int)$_COOKIE['login_id'];
$sql = "SELECT last_session FROM `user` WHERE id = $id";
$login = mysql_fetch_assoc(mysql_query($sql));
// проверить номер сессии с тем что в базе
if (session_id() != $login['last_session']) {
// Ссылка на авторизацию
die();
}
}
mvg
В прочем в этом я не вижу сложности, я вижу сложность только в том, как обнулить запись в бд, после того как пользователь покинул страницу, грубо говоря просто закрыл вкладку в браузере и после этого запись в бд с полем айпишника должна обновиться


Проверять есть ли пользователь он-лайн. Как пользователь ушел в оф-лайн апдейтить поле ай-пи.
Kusss
Cron_ом что ли это делать ?
Ведь когда "вышел" последний пользователь, "кому" изменение вносить ?
Godwarlock
mvg
<?

session_start();

if(isset($_POST['login'])){
$user_login = addslashes($_POST['login']);
$user_pass = addslashes($_POST['pass']);
$status = addslashes($_POST['status']);
include "connect.php";


$result = mysql_query ("SELECT * FROM table_users WHERE user_login='$user_login'", $db);
if(mysql_num_rows($result) != 0)
{
$id = (int)$_SESSION['login'];
$sql = mysql_query ("UPDATE table_users SET status={$id} WHERE user_login='$user_login'");
$login = mysql_fetch_assoc(mysql_query($sql));

$row = mysql_fetch_array($result);

if($row['user_pass'] == $user_pass)
{
echo "<data>
<id><![CDATA["
.$row['id']."]]></id>
<login><![CDATA["
.$row['user_login']."]]></login>
<pass><![CDATA["
.$row['user_pass']."]]></pass>
<mail><![CDATA["
.$row['mail']."]]></mail>
</data>"
;
}
else{
echo 'fail';
}
}

else{
echo 'fail';
}

mysql_close($db);
}

?>

Пытаюсь записать в бд сессию чет не выходит =/
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.