@communistic_sistema

Как сохранить данные при повторном вызове HTTP REQUEST ($_POST, $_GET, и т.п.)?

Есть некоторый код php, который выделяет из html формы данные:
<form action="main.php" method="get">
      <input placeholder="логин" name="login" type="text"/>
      <input type="submit" value="Зарегестрироваться"/>
</form>


Есть код php (файл - main.php), который собирает данные:
$login = null; //намеренно ставим в null, чтобы код понимал, что логин еще не дали
if (isset($_POST["login"])){
      $login = $_POST["login"]; //получаем логин
}


Ситуация такая: форма заполняется, и php получает $login, и он больше не равен null. В коде есть условие которое мешает ставить $login в null, если он принял текстовое значение - получили данные формы и логин больше никогда не будет равен null. А вот проблема начинается когда в этом же php коде получаем данные из следующей формы. $login снова становится null. Как будто main.php был запущен заново. Как избежать "обнуление" переменных, если мы хотим обрабатывать несколько форм (последовательно, каждый раз вызывая их через include __DIR__."") и данные из них засовывать в main.php и их не терять.

У меня было несколько идей:
- использовать другой метод запроса (пробовал через $_GET - та же проблема), но моих знаний не хватает, чтобы выбрать нужный
- получать данные через другой скрипт (подключенный через require __DIR__.""), но опять же, моих знаний не хватает, чтобы не сделать бесконечно загружающуюся страницу (я пробовал через while ($login == null){} - бесконечная загрузка)

Помогите, пожалуйста, со скриптом. Мне нельзя терять из него значения переменных.

P.S.: данные в $_COOKIE и $_SESSION почему-то не сохраняются, как и это исправить?
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега PHP
session_start()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bashcod
Нужно передать данные из первого запроса во второй. Для этого в input модно заполнить атрибут value при рендере формы (на этапе отправки клиенту). Value="" будет пустым полем ввода при формировании формы для первого запроса.
<input name="login" value="old Login" />
Если для второго запроса в форме не должны отображаться уже заполненные поля можно использовать input type hidden, например если поле ввода пароля должно появиться отдельно как на майкрософте. Такие поля в запросе должны передаться.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы