mysql — сохраняет данные с помощью php-скрипта и удерживает пост-переменные при ошибке

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

Как лучше всего решить эту проблему:

Моя страница: edit_data.php
У меня есть форма (method="post" action="save.php"). При отправке я храню данные в таблице MySQL.

В save.php:
MySQL insert (вернуть новый идентификатор набора данных)
если успех я называю edit_data.php?id=<new_id>
если ошибка звоню error.php?msg=<error message>

Проблема в том, что я теряю данные по ошибке.

Это то, что я хочу:
— вернуться к edit_data.php
— покажи ошибку там
— и я хочу, чтобы все поля содержали свои исходные данные

Я не могу взять $ _GET, потому что данные слишком велики.

У кого-нибудь есть простое решение для меня?

Спасибо

0

Решение

Есть ли причина, по которой вы не можете использовать $_SESSION? Таким образом, все ваши данные будут сохранены на время сеанса или до тех пор, пока вы его не удалите.

Убедитесь, что каждый документ PHP содержит session_start(); перед выводом любых заголовков, это также относится к любому пустому месту перед вашим <?php тег.

Чтобы поместить все ваши данные $ _POST в $ _SESSION [‘POST’], вы можете сделать что-то вроде:

<?php
session_start();
foreach($_POST as $key=>$val) {
$_SESSION['POST'][$key] = $val;
} ?>

Затем вы можете получить доступ к своим предыдущим переменным POST, открыв $_SESSION['POST']['KEYNAMEHERE']

PS: $_GET а также $_POST взаимозаменяемы здесь

0

Другие решения

Если $ _GET слишком большой, вы можете отредактировать файл php.ini.

Обратите внимание, что установки PHP с установленным патчем suhosin будут иметь
ограничение по умолчанию 512 символов для получения параметров. Хотя плохо
На практике большинство браузеров (включая IE) поддерживают URL до 2000
символов, в то время как Apache имеет значение по умолчанию 8000.

Чтобы добавить поддержку длинных параметров с помощью suhosin, добавьте
suhosin.get.max_value_length = в php.ini

http://www.php.net/manual/en/reserved.variables.get.php#101469

Максимальный размер параметров URL в _GET

0