Страница 1 из 1
/решено/ Авторизация и AJAX
Добавлено: 03 мар 2015 09:38
alvd
========================
всё просто... AJAX запрос должен получить правильный ответ, типа ВРЕМЯ_ВЫШЛО" и перенаправить на логин.
========================
Надо допилить базу данных (повесить авторизацию). В активе знание PHP, MySQL и умение всё настроить на серверной стороне, HTML и CSS на клиентской. В пассиве плохое понимание Javascript.
Вопросы:
1. если я делаю авторизацию юзера, создавая куку, достаточно ли поместить в неё ID юзера и некоторое случайное число на период жизни куки, чтобы проверять его на время сеанса юзера?
2. на страничках есть AJAX запросы
Код: Выделить всё
request.open('GET', 'ajax.php?value=' + eURI, true);
request.send();[code] и соответственно, дёргается страничка ajax.php с набором параметров. Надо ли проверять куку и в [b]ajax.php[/b]?
И вообще, может не надо куку, а надо скрытое поле, или что там ещё есть... Как правильно проверяется авторизация пользователя, чтобы враг не проник в БД?
Авторизация и AJAX - прошу совета
Добавлено: 03 мар 2015 09:46
Zaxarov
[quote="alvd"]Надо допилить базу данных (повесить авторизацию). В активе знание PHP, MySQL и умение всё настроить на серверной стороне, HTML и CSS на клиентской. В пассиве плохое понимание Javascript.
Вопросы:
1. если я делаю авторизацию юзера, создавая куку, достаточно ли поместить в неё ID юзера и некоторое случайное число на период жизни куки, чтобы проверять его на время сеанса юзера?
2. на страничках есть AJAX запросы
Код: Выделить всё
request.open('GET', 'ajax.php?value=' + eURI, true);
request.send();[code] и соответственно, дёргается страничка ajax.php с набором параметров. Надо ли проверять куку и в [b]ajax.php[/b]?
И вообще, может не надо куку, а надо скрытое поле, или что там ещё есть... Как правильно проверяется авторизация пользователя, чтобы враг не проник в БД?[/quote]
хех... чтобы враг в БД не проник, нужна трехзвёнка с application server :oops:
А в частности твоей задачи, могу предположить, что лучше сгенеренное число вместе с ID усера.
Это число хранишь в куках, кука должна иметь ограниченное время БЕЗдействия.
ТО есть проверяешь, когда её последний раз дёргали, и если овертайм - то отправляешь заново на логин.
Авторизация и AJAX - прошу совета
Добавлено: 03 мар 2015 09:57
alvd
Zaxarov писал(а):А в частности твоей задачи, могу предположить, что лучше сгенеренное число вместе с ID усера.
Это число хранишь в куках, кука должна иметь ограниченное время БЕЗдействия.
ТО есть проверяешь, когда её последний раз дёргали, и если овертайм - то отправляешь заново на логин.
Т.е. куку можно проверять на наличие, нету - значит, на логин, если есть, ставить заново, так? А в той страничке, которую дёргает javascript - тоже куку проверять? Т.е. если у меня при выборе из списка заполняется комбобокс, то та страничка что отдаёт данные комбобоксу, куку должна проверять? И потом, кука кончилась, javascript дёрнул ручку, в ответ сервер должен вернуть... что, собственно, вернуть?
Авторизация и AJAX - прошу совета
Добавлено: 03 мар 2015 10:04
Zaxarov
alvd писал(а):Zaxarov писал(а):А в частности твоей задачи, могу предположить, что лучше сгенеренное число вместе с ID усера.
Это число хранишь в куках, кука должна иметь ограниченное время БЕЗдействия.
ТО есть проверяешь, когда её последний раз дёргали, и если овертайм - то отправляешь заново на логин.
Т.е. куку можно проверять на наличие, нету - значит, на логин, если есть, ставить заново, так? А в той страничке, которую дёргает javascript - тоже куку проверять? Т.е. если у меня при выборе из списка заполняется комбобокс, то та страничка что отдаёт данные комбобоксу, куку должна проверять? И потом, кука кончилась, javascript дёрнул ручку, в ответ сервер должен вернуть... что, собственно, вернуть?
ты должен проверять не время создания куки, а её содержимое. В куку занеси дату-время создания куки, таки кука - вполне физический файл. Пусть и с нулевой длиной.
Если кука кончилась хотя бы в одном из скриптов - сразу на страницу авторизации.
Но я бы тебе посоветовал перейти на HTTPS, там оно более всё правильно.
Авторизация и AJAX - прошу совета
Добавлено: 03 мар 2015 10:51
alvd
Zaxarov писал(а):Если кука кончилась хотя бы в одном из скриптов - сразу на страницу авторизации.
т.е. в страничка, которую дёргает javascript, должна вернуть что?
Zaxarov писал(а):Но я бы тебе посоветовал перейти на HTTPS, там оно более всё правильно.
А тут я прошу ткнуть меня носом в умную книгу...
Авторизация и AJAX - прошу совета
Добавлено: 03 мар 2015 10:53
Zaxarov
alvd писал(а):А тут я прошу ткнуть меня носом в умную книгу...
Без знания, чего у тебя там и как, то вот примерно так:
http://help.ubuntu.ru/wiki/apache_%D0%B8_https
Авторизация и AJAX - прошу совета
Добавлено: 03 мар 2015 11:10
alvd
Zaxarov, с книгой понятно, а вернуть-то что, чтобы сразу на логин? Для обычной страницы я перенаправление сделаю (правильно?), а для ajax что?
Авторизация и AJAX - прошу совета
Добавлено: 03 мар 2015 11:54
Zaxarov
alvd писал(а):Zaxarov, с книгой понятно, а вернуть-то что, чтобы сразу на логин? Для обычной страницы я перенаправление сделаю (правильно?), а для ajax что?
ну так ты страничку просто переадресуй, на страницу логина.
Блин, ну не знаю, как на пальцах объяснить

Авторизация и AJAX - прошу совета
Добавлено: 04 мар 2015 10:10
alvd
Zaxarov писал(а):Блин, ну не знаю, как на пальцах объяснить

Допустим, основная страничка
Код: Выделить всё
<?php
SetCookie("test", "testcookie", time()+60);
echo @$_COOKIE["test"];
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>AJAX test</title>
</head>
<body onLoad="doSelect()">
<script type="text/javascript">
function test(value)
{
var request = new XMLHttpRequest();
var eURI = encodeURIComponent(value);
request.onreadystatechange = function()
{
if (request.readyState == 4 && request.status == 200)
{
document.getElementById("txtAJAX").innerHTML=request.responseText;
}
};
request.open('GET', 'ajax.php?value=' + eURI, true);
request.send();
};
function doSelect()
{
document.all["position"].selectedIndex = 0;//options[0].selected = true;
};
</script>
<form action="">
<select name="position" onchange="test(this.value)">
<option disabled>Выберите</option>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
</form>
<hr>
<div id="txtAJAX"></div>
<hr>
</body>
</html>
и страничка которую вызывает request
Код: Выделить всё
<?php
$param = $_GET['value'];
$coo = $_COOKIE['test'];
$paramVal = intval($param);
if (($paramVal < 1) or ($paramVal > 3))
echo "Элемент не выбран";
else
echo "value = $paramVal; cookie = $coo";
?>
и допустим куки нет. Что должна вернуть страничка, чтобы попасть опять на логин?
/решено/ Авторизация и AJAX
Добавлено: 22 мар 2015 10:35
alvd
В общем, со стороны сервера
Код: Выделить всё
<?php
require_once 'connect.php';
if (!checkLogged()) echo END_OF_SESSION;
else
{
делаем_что_то;
}
?>
и со стороны клиента
Код: Выделить всё
if (request.readyState == 4 && request.status == 200)
{
var response = request.responseText;
if (response.indexOf('SESSION_CLOSED_BY_TIMEOUT')+1) window.location.href = 'login.php'
else document.getElementById("txtAJAX").innerHTML = response;
}
В начале страницы, соответственно, тоже проверять.