Я уже искал ответ здесь и с 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, потому что данные слишком велики.
У кого-нибудь есть простое решение для меня?
Спасибо
Есть ли причина, по которой вы не можете использовать $_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
взаимозаменяемы здесь
Если $ _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