Авторизация и сессии при помощи php + ajax

409
17 мая 2017, 08:13

Пишу дипломную задачу и появился вопрос в связке php и ajax.
Я уже сделал БД, написал верстку логин-пейдж, скрипт php для проверки хешированных паролей. Аяксом отправляется запрос php-скрипту, сверяется логин и пароль, отправляется обратно на форму ответ типа "да-нет". Это всё работает.

Но совершенно не могу разобраться, как реализовать сессии с php и аякс.
С какой стороны вообще подходить.
Во всех примерах в интернете используется по сути чисто php во всех страницах.
Но когда просто сидишь на странице (какой-нибудь в сети), в адресной строке нет расширения страницы типа index.php.
Но я не о том, чтобы убрать расширение и верстать через php-страницы. Я хочу использовать php-скрипты лишь в связке с аякс-запросами.
Допустим, сверили пароль, перешли на какую-нибудь /mainpage.html.
Перед тем, как переходить, нужно ведь сверить правильность сессии? Тот ли человек залогинелся? Иначе по сути можно просто не логинется и совершить переход на /mainpage через адресную строку.
Короче, ясно, что я тут плыву. Наверняка чушь полнейшую написал.
Если поняли мысль, дайте ссылок на материалы по этой теме.

Answer 1

http://php.net/manual/ru/session.idpassing.php

Сессии в PHP работают или через uri - параметор или через cookie. В большинстве стандартных конфигураций это cookie. Cookie, если их не трогат на стороне клиента, отправляються всегда со всеми запросами на данный домен.

Т.е. Каждый AJAX запрос или любой другой запрос на то же домен будет содержать id сессии. Если вы не делали каких то странных манипуляций.

Если у вас настроен PHP использовать uri. То всегда надо передавать id как дополнительный параметр. Если пользуете jQuery то можно через https://api.jquery.com/jquery.ajaxsetup/ добавить его ко всем запросам.

ПС:

По сути вы таким образом созадёте API. И привязывать его таким образом не совсем правильно. Вы заставляете потребителя API зависить от вашей внутринней реализации этого API. Что будет API переедет на node,go... ? Лучше посмотреть в сторону JWT(https://jwt.io/) например.

READ ALSO
Как навесить событие на один из сабмитов в форме?

Как навесить событие на один из сабмитов в форме?

Есть форма с 2 сабмитами, необходимо отслеживать поле #field_1 и после запустить клик по кнопке #submit_1Накатал быстро на jQuery - но срабатывает, - подскажите...

239
Слайдер javascript при livereload

Слайдер javascript при livereload

Суть проблемы такова: использую редактор brackets со встроенным livereloadЕсть так же скрипт слайдера, когда подключаю его, то он работает, все переключается...

296
Форматировать строку в объект Date(), js

Форматировать строку в объект Date(), js

У меня есть строка такого формата - 2206

316