У юзера загрузилась страница. Он может быть авторизован, а может нет. Нажимает там на кнопку, $_POST уходит в PHP - обработчик функции JS.
Как внутри обработчика проверить зарегин ли он?
Сессии основного сеанса там не работают.
Думаю создать куку при авторизации и из обработчика проверить:
1. есть ли кука
2. соответствует ли она куке сохраненной в БД при авторизации.
Есть какие-нибудь другие методы? Где про это можно почитать?
Спустя 24 минуты, 5 секунд (13.09.2012 - 07:17) Guest написал(а):
Обычная авторизация только с использованием JS (AJAX).
Серверная часть как обычно, проверяет каждый запрос на соответствие авторизации и если нет то, если был ajax запрос выводит информацию обработчику, если обычный запрос и вывод страницы то как обычно
Просто на клиенте JS обработчик должен всегда перехватывать ответы сервера и проверять информацию о не успешной авторизации пользователя, а это достигается единственной точкой отсылок AJAX запросов.
Серверная часть как обычно, проверяет каждый запрос на соответствие авторизации и если нет то, если был ajax запрос выводит информацию обработчику, если обычный запрос и вывод страницы то как обычно

Просто на клиенте JS обработчик должен всегда перехватывать ответы сервера и проверять информацию о не успешной авторизации пользователя, а это достигается единственной точкой отсылок AJAX запросов.
Спустя 25 минут, 8 секунд (13.09.2012 - 07:42) GET написал(а):
Цитата |
и если нет то, если был ajax запрос |
я так понимаю, это подразумевает перезагрузку страницы, а мне надо, чтоб этого не было.
Спустя 27 минут, 8 секунд (13.09.2012 - 08:09) Guest написал(а):
Нет, не обязательно, сервер работает всегда в одном режиме проверки, только вывод в браузер производится разными способами. Например если без перезагрузки, то JSON форматом можно уведомлять о сбое авторизации, если таковой был.
Спустя 3 минуты, 38 секунд (13.09.2012 - 08:13) Guest написал(а):
Проверка авторизации должна обязательно быть серверной иначе при использовании куки флага можно легко их удалить или подменить. Хотя, есть кука, она хранит хэш сессии.
Спустя 8 минут, 9 секунд (13.09.2012 - 08:21) GET написал(а):
Guest
Я вот не пойму...сайт загружен, сервер ждет от клиента действий. Через функцию JS в обработчик на сервер пришел запрос, на файл написанный на PHP, файл этот в данный момент автономный, он не видит сессию юзера, к примеру, все, что он может взять это что-то вытащить из физической памяти сервера, а не из оперативной. Конечно данные можно хоть JSON отправить, а можно и просто в строчку написать причем здесь это?
Можешь написать, что будешь делать внутри PHP обработчика, чтоб узнать пришел запрос от авторизированного юзера или нет?
Я и пишу про PHPSESSID, про эту куку. Отсылаем id юзера и смотрим совпадает ли она с той что хранится в БД.
Я вот не пойму...сайт загружен, сервер ждет от клиента действий. Через функцию JS в обработчик на сервер пришел запрос, на файл написанный на PHP, файл этот в данный момент автономный, он не видит сессию юзера, к примеру, все, что он может взять это что-то вытащить из физической памяти сервера, а не из оперативной. Конечно данные можно хоть JSON отправить, а можно и просто в строчку написать причем здесь это?
Можешь написать, что будешь делать внутри PHP обработчика, чтоб узнать пришел запрос от авторизированного юзера или нет?
Я и пишу про PHPSESSID, про эту куку. Отсылаем id юзера и смотрим совпадает ли она с той что хранится в БД.
Спустя 20 минут, 19 секунд (13.09.2012 - 08:41) Guest написал(а):
Я ж и говорю :)
обычная централизованная авторизация
В index.php:
По данным полученным от сервера, если результат ошибка обработчик сам определяет что ему делать. Здесь гибкость в том что обработчик может определять не только ошибки авторизации, но любые типизированные ошибки.
обычная централизованная авторизация
В index.php:
session_start();
// как вариант if(isset($_REQUEST['session'])) session_id($_REQUEST['session']);
// в YII это более читаемо Yii
if (!isset($_SESSION['user_id']))
{
echo json_encode(array('result' => 'error', 'action' => 'auth', 'msg' => 'Auth not required!'));
exit();
}
По данным полученным от сервера, если результат ошибка обработчик сам определяет что ему делать. Здесь гибкость в том что обработчик может определять не только ошибки авторизации, но любые типизированные ошибки.
Спустя 9 минут, 56 секунд (13.09.2012 - 08:51) GET написал(а):
Guest
Цитата |
if (!isset($_SESSION['user_id'])) |
Это внутри обработчика???
Там же не видно будет $_SESSION['user_id']!
Спустя 2 минуты, 22 секунды (13.09.2012 - 08:54) Guest написал(а):
Если нужно отделить от обычных запросов
session_start();
// как вариант if(isset($_REQUEST['session'])) session_id($_REQUEST['session']);
// в YII это более читаемо Yii
if (!isset($_SESSION['user_id']))
{
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']))
{
echo json_encode(array('result' => 'error', 'action' => 'auth', 'msg' => 'Auth not required!'));
exit();
}
else
{
if (!headers_sent()) header('Content-type: text/plain');
echo $error_page;
}
}
Спустя 3 минуты, 25 секунд (13.09.2012 - 08:57) GET написал(а):
Guest
Где этот код должен быть в index.php или обработчике запроса JS?
Где этот код должен быть в index.php или обработчике запроса JS?
Спустя 1 минута, 25 секунд (13.09.2012 - 08:59) Guest написал(а):
Вот обработчик и по совместительству единственный, который отправляет AJAX запросы, на JQuery
$.ajax({
url: url,
data: data,
dataType: 'JSON',
async: true,
error: function()
{
new Error('Bad request for server URL: ' + url);
},
success: function (data, textStatus)
{
if(data['redult'] == 'error')
// Действия по обработке ошибки
else
// Нормальный сценарий работы
}
})
Спустя 39 секунд (13.09.2012 - 08:59) Guest написал(а):
Цитата |
Где этот код должен быть в index.php или обработчике запроса JS? |
Цитата |
Я ж и говорю ![]() обычная централизованная авторизация В index.php: |
Спустя 9 минут, 47 секунд (13.09.2012 - 09:09) GET написал(а):
Guest
Я наверное тупой совсем.
Не могу понять, функция JS
отсылает inputString в виде $_POST['queryString'] в TEST.php
причем здесь index.php?
Перезагрузки страницы нет. Index.php уже отработал.
Я наверное тупой совсем.
Не могу понять, функция JS
$.post("TEST.php", {queryString: ""+inputString+""}
отсылает inputString в виде $_POST['queryString'] в TEST.php
причем здесь index.php?
Перезагрузки страницы нет. Index.php уже отработал.
Спустя 33 секунды (13.09.2012 - 09:10) Michael написал(а):
A.B.C. если сессии на куках (а это обычный вариант), то сессионная кука на сервер будет идти и при аякс запросе. И в обработчике запроса так же стартуешь сессию и тоже самое все доступно что и при обычной работе с перезагрузкой страницы.
Спустя 5 минут, 23 секунды (13.09.2012 - 09:15) Guest написал(а):
Цитата |
причем здесь index.php? Перезагрузки страницы нет. Index.php уже отработал. |
Для этого делают централизованный вход, единственный для всех запросов.
Если разбрасывать, во всех придётся проверять авторизацию.
Спустя 11 минут, 38 секунд (13.09.2012 - 09:27) GET написал(а):
Guest
Можешь посоветовать инфу где почитать про
Можешь посоветовать инфу где почитать про
Цитата |
Для этого делают централизованный вход, единственный для всех запросов. |
Спустя 33 секунды (13.09.2012 - 09:27) GET написал(а):
Guest
Спасибо.
Спасибо.
Спустя 9 минут, 56 секунд (13.09.2012 - 09:37) Guest написал(а):
Спустя 38 секунд (13.09.2012 - 09:38) Guest написал(а):
Цитата |
Спасибо. |
Не за что, удачи

Спустя 5 часов, 14 минут, 4 секунды (13.09.2012 - 14:52) GET написал(а):
Guest
Еще раз хочу сказать спасибо.
Понял, чего ты добивался, чтоб я понял.
)) Действительно централизованный вход это супер!
Еще раз хочу сказать спасибо.

Понял, чего ты добивался, чтоб я понял.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.