Сценарий входа в систему Ajax. Проблема с передачей переменных сеанса [закрыто]Jquery

Программирование на jquery
Ответить
Гость
 Сценарий входа в систему Ajax. Проблема с передачей переменных сеанса [закрыто]

Сообщение Гость »


У меня есть этот сценарий. Когда я создаю сеанс в этом скрипте, я не вижу переменные сеанса в своем приложении

/* * * ЗАДАЧА: НЕОБХОДИМО СДЕЛАТЬ ПРОВЕРКУ НА СТОРОНЕ СЕРВЕРА! * TODO: Validation — динамическая проверка уникальных записей таблицы базы данных. * */ require_once ($_SERVER['DOCUMENT_ROOT'] . "/sourcephp/classphp/logics/AuthObject.php"); require_once ($_SERVER['DOCUMENT_ROOT'] . "/sourcephp/classphp/logics/LogInObject.php"); require_once ($_SERVER['DOCUMENT_ROOT'] . "/sourcephp/classphp/logics/Sessions.php"); require_once ($_SERVER['DOCUMENT_ROOT'] . "/sourcephp/Registry.php"); if (isset($_POST['username']) && isset($_POST['password'])) { session_write_close(); сеанс_unset(); session_name('PROPERWEBPRO'); сеанс_start(); session_regenerate_id (истина); $sessionID = session_id(); $username = $_POST['имя пользователя']; $пароль = $_POST['пароль']; $login = LogInObject::getInstance($username, $password); $auth = $login->passComparison(); если ($login->getLoginCorrect()) { // Эта часть небезопасна, и я в этом уверен. // После этого ответа мне нужно передать «секрет», который является // идентификатор сеанса по URL $_GET['secret']. $tabliczka = ['sessionId' => $sessionID, 'dataS' => 'Успех!', 'userauthS' => $auth]; $_SESSION['something'] = 'Вход завершен'; // Это не попадет в основные системные скрипты/приложение. } еще { $tabliczka = ['dataS' => 'Ошибка!']; } $data = json_encode($таблица); эхо $данные; } Это немного изменилось, но когда я создаю $_SESSION['something'] Я не могу передать его в основные скрипты приложения.

Есть ли передовая практика работы с ajax и сессиями.

Я пытался передать идентификатор сеанса через JavaScript, а затем в виде массива $_GET. Но я все еще застрял.

Обновление: Да, PHP-скрипты ajax находятся на одном сервере и в том же домене. Обновление: я уважаю ваш ответ, АДайсон.

класс Sessions расширяет LogInObject { публичная функция __construct(?string $username = null, ?string $password = null) { родитель::__construct($имя пользователя, $пароль); } публичная функция sessionCreateBeforeLogIn(Request $request): void { if (session_name() === "PROPERWEBPRO") { session_write_close(); сеанс_unset(); } $sessionOptions = [ 'путь' => "/", 'домен' => $_SERVER['HTTP_HOST'], 'безопасный' => ложь, 'httponly' => правда, 'тот же сайт' => 'Строгий']; session_set_cookie_params($sessionOptions); имя_сессии('WPHPSESID'); сеанс_start(); $sessionCookie = $request->getSessionCookie(); если (! $sessionCookie) { $request->setSessionCookie(session_name(), "Pusty Identyfikator Sesji!"); } еще { если (! $request->getSessionCookie()) { die («Сессионный файл cookie не создан».); } еще { $request->setSessionCookie(session_name(), session_id()); } } } публичная функция sessionCreateAfterLogIn(Request $request): void { // Понижний метод два раза сейчас с идентификацией // позированием с логотипом AJAX(signin_xhr.php). // Cookie Tworzy Również, в течение 10 секунд или момента открытия. - w celach testovych. // Информационное сообщение: «Этот тест стал выконане». // Cookie-файл сеанса работает в течение 15 минут с момента каждого события. if (session_name() === 'WPHPSESID') { session_write_close(); сеанс_unset(); } $sessionOptions = [ 'путь' => "/", 'домен' => $_SERVER['HTTP_HOST'], 'безопасный' => ложь, 'httponly' => правда, 'тот же сайт' => 'Строгий']; session_set_cookie_params($sessionOptions); session_name('PROPERWEBPRO'); if (! isset($_COOKIE['PROPERWEBPRO'])) { session_id($_GET['секрет']); сеанс_start(); // Poniżej trzeba się jeszcze zastanowić // session_regenerate_id(true); // Выполняем установку файлов cookie $request->setSessionCookie(session_name(), session_id()); } еще { session_id($_GET['секрет']); сеанс_start(); $request->setSessionCookie(session_name(), session_id()); } // Jak uwierzytelnić Rozpoczętą sesję? $_SESSION['ValidatedUser'] = 'Подтверждено!'; $_SESSION['ConfirmedUser'] = $_GET['authuser']; } } Я использую шаблон в своей системе.

require_once ($_SERVER['DOCUMENT_ROOT'] . "/sourcephp/classphp/controll/Commands.php"); require_once ($_SERVER['DOCUMENT_ROOT'] . "/sourcephp/classphp/controll/Request.php"); require_once ($_SERVER['DOCUMENT_ROOT'] . "/sourcephp/classphp/logics/Sessions.php"); require_once ($_SERVER['DOCUMENT_ROOT'] . "/sourcephp/Registry.php"); класс DefaultCommand расширяет команды { // Следующий класс создается для выполнения интеграции // обрабатываем сеансы с моей системой. То есть соединить его с фасадным контроллером и обрабатывать запросы. и т. д. // TODO: Вышеуказанные задачи на сегодня, 26 февраля 2024 г. от 22:00. Выполним в течение одного рабочего дня. // ЗАДАЧА: выяснить, где разместить обработку сеанса и обработку файлов cookie в шаблоне контроллера фасада и других шаблонах. публичная функция doExecute(Request $request): void { $loginGet = $request->getPropertyGet('login'); $sess = новые сеансы(); если (is_null($loginGet)) { $sess->sessionCreateBeforeLogIn($request); require_once ($_SERVER['DOCUMENT_ROOT'] . "/sourcephp/classphp/presentation/views/mainview.php"); } else if ($loginGet === 'passed' && isset($_GET['secret']) && isset($_GET['authuser'])) { $sess->sessionCreateAfterLogIn($request); if (isset($_COOKIE['PROPERWEBPRO'])) { //TODO: вам нужно подумать, является ли это безопасным решением. Это выше в условии. if ($_COOKIE['PROPERWEBPRO'] === session_id()) { if ($_SESSION['ValidatedUser'] === "Подтверждено!" && $_SESSION['ConfirmedUser'] === $_GET['authuser']) { require_once($_SERVER['DOCUMENT_ROOT'] . "/sourcephp/classphp/presentation/views/properview.php"); //echo(session_name() . ", " . session_id() . "
"); //echo($_COOKIE['PROPERWEBPRO'] . 'Здесь хорошо.'); } } еще { заголовок("Местоположение: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); } } еще { заголовок("Местоположение: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); } } еще { $sess->sessionCreateBeforeLogIn($request); include_once($_SERVER['DOCUMENT_ROOT'] . "/sourcephp/classphp/presentation/views/mainview.php"); } } } Главное. Когда я создаю session_start(); в скрипте ответа ajax php, будет ли он передавать сеанс в систему - основные скрипты php.

Надеюсь, этой информации достаточно. Если нет, то готов рассказать подробнее.

Я не уверен, что у меня есть хороший подход к этому вопросу.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»