Переменные сеанса недоступны в запущенном сеансе на разных страницах - PullRequest
0 голосов
/ 17 февраля 2019

Цель состоит в том, чтобы сохранить некоторые данные между страницами после обновления, когда пользователь выбирает критерии фильтра поиска БД из 6 выпадающих списков на странице, используя session_start (), а переменные SESSION устанавливаются в 6 значений окна выборапользователь выбирается, так как кнопка поиска нажимается, вызывая действие контроллера Laravel, где SESSION - это сеанс session_start (), и 6 переменных блока выбора устанавливаются для SESSION.

Цель состоит в том, чтобы сбросить поля выбора из переменных сеанса, заполняемых при нажатии кнопки поиска, сохраняя критерии выбора элементов выбора, выбранные пользователем, чтобы им не пришлось повторно выбирать 6 полей выбора снова.Эти значения выбора в поле выбора сохраняются в переменных сеанса;

При обновлении после возврата успешного поиска переменные SESSION считываются в html-разделе masterlayout.blade, чтобы программно выбрать предыдущий выбор фильтра поиска, введенный пользователем, так как страница повторного запуска отображается с masterlayout..blade, включая nav.blade.

В masterlayout.blade (который включает nav.blade с полями выбора) в системе шаблонов Laravel, где я ЧИТАЮ эти переменные SESSION при обновлении пользовательского поиска, затем устанавливаю переменные SESSIONиз контроллера, вызванного нажатием кнопки, сбросьте поля выбора на значения в параметрах SESSION.

Но этот шаблон masterlayout.blade вызывается с других страниц, так как он и навигация поиска появляются на других страницах, которые могут бытьиспользуется для поиска или нет, до или после того, как пользователь выполнил фильтрованный поиск.

Проблема в том, что когда запрашиваются другие страницы, даже после поиска переменные SESSION кажутся недоступными, сбрасываются в ничто или что-либо еще - я не могу понять, как я не уничтожил сеанс, и они должныбыть доступным с любой страницы после установки.

Но я получаю сообщение об ошибке недоступности переменных _SESSION, когда запрашиваются другие страницы.

  1. Если вы знаете, как это исправить, сообщите мне.

  2. Если вы знаете, как лучше сохранить значения поля выбора между страницами, дайте мне знать.Я не хочу, чтобы права на БД делали это, но, возможно, есть способ javascript для сохранения переменных на разных страницах.

Спасибо

1 Ответ

0 голосов
/ 18 февраля 2019

Это в контроллере, получающем доступ к данным поста от нажатия кнопки, который вызывает контроллер

//colvals
session_start();
        $bidded=$_GET["bidded"];
        $_SESSION["bidded"] = $bidded;

        $state=$_GET["state"];
        $_SESSION["state"] = $state;

        $city=$_GET["city"];
        $_SESSION["city"] = $city;

        $biddertype=$_GET["biddertype"];
        $_SESSION["biddertype"] = $biddertype;

        $job=$_GET["job"];
        $_SESSION["job"] = $job;

        $subjob=$_GET["subjob"];
        $_SESSION["subjob"] = $subjob;

На странице навигации поискового фильтра значения поля выбора из предыдущего поиска пользователя (сохраненные в коде выше из контроллера)устанавливается следующим образом:

<script> 
    document.getElementById("bidded").addEventListener("load", mySelect());
    document.getElementById("state").addEventListener("load", mySelect());
    document.getElementById("city").addEventListener("load", mySelect());
    document.getElementById("biddertype").addEventListener("load", mySelect());
    document.getElementById("job").addEventListener("load", mySelect());
    document.getElementById("subjob").addEventListener("load", mySelect());

    function mySelect() { 
    document.getElementById("<?php echo $_SESSION['bidded'];?>").selected = "true";
    document.getElementById("<?php echo $_SESSION['state'];?>").selected = "true";
    document.getElementById("<?php echo $_SESSION['city'];?>").selected = "true";
    document.getElementById("<?php echo $_SESSION['biddertype'];?>").selected = "true";
    document.getElementById("<?php echo $_SESSION['job'];?>").selected = "true";
    document.getElementById("<?php echo $_SESSION['subjob'];?>").selected = "true";
    }

</script> 

Сеанс Javascript и локальные переменные не используются в этом случае, потому что при обновлении страницы она читает состояние по умолчанию для полей выбора и перезаписывает те, которые были сохранены перед вводом поискапредставление.

Проблема была в том, что другие страницы использовали бы тот же шаблон и жаловались на отсутствие заданных переменных _SESSION, когда я не уничтожил сеанс, но я предполагаю, что только один сценарий может получить к нему доступ, даже если у этих страниц нет ни одного,Требуется отправка формы, чтобы снова установить значения выбора фильтра сеанса.

Поскольку это уникальная функция, она может в конечном итоге иметь свой собственный шаблон, так как беспокойство о 100 других сессиях страниц - больше PITA, чем секундашаблон.Я попробую дать куки, но не хочу показывать данные запроса на стороне пользователя.

Спасибо за ввод ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...