некоторая помощь php в создании страницы «одобрить форму»

0

У меня есть основная форма с большим количеством входов. Действие форм устанавливается в файл php. После отправки php-страницы отображаются все входы, введенные пользователем в форму. Пользователь должен перепроверить все и нажать кнопку "одобрить" ! Проблема в том, что я не знаю, как это сделать...

Я хочу, в конечном итоге, поместить все данные в базу данных MySQL, но только после одобрения, не отправляя форму!

Есть ли способ "вызвать" php script после нажатия кнопки "одобрить" ?

Как это делается? Я имею в виду, я не хочу писать информацию в базу данных MySQL, а затем пользователь сожалеет и НЕ ударяет "одобрить" , а затем данные уже находятся в базе данных.

Спасибо!

Просто дайте мне знать, если вам нужно больше ввода (я обновлю вопрос)

3 ответа

4
Лучший ответ

Один из способов добиться этого - переписать все значения, которые были представлены только в форме утверждения в виде скрытых входов html. Вот так:

<form name="approval" method="post>
    <input type="hidden" name="firstname" value="<?php echo htmlspecialchars($_REQUEST['firstname']); ?>" />
    <input type="hidden" name="lastname" value="<?php echo htmlspecialchars($_REQUEST['lastname']); ?>" />
    ...
    <input type="submit" value="Approve!" />
</form>

Другие предложили сохранить значения в сеансе пользователей. Если вы решите пойти по этому маршруту, будьте осторожны с пользователем, который одновременно работает с несколькими окнами браузера. Их разные формы будут разделять один и тот же сеанс, и в зависимости от того, какой порядок они предпочитают подавать, вы можете получить некоторые перекрестные проводы, если ваш код слишком наивен. Один из способов - создать уникальный ключ для каждой формы и передать ее со страницы на страницу. Это, конечно, становится беспорядочным, поэтому я предпочитаю подход скрытой формы.

Другая ошибка, связанная с подходом к сеансу, - это реализация PHP по умолчанию, использующая локальную файловую систему для хранения данных сеанса. Это ломается, когда у вас избыточные веб-серверы. Разумеется, вы можете поменять начальную сессию по умолчанию на более сложную (на основе memcached). Но опять же, это просто сложнее. Почему бы не избежать сложности и придерживаться скрытых полей формы?

  • 0
    +1, но опечатка: отсутствует ) в htmlspecialchars звоните.
  • 0
    +1 за объяснение проблемы сеанса.
Показать ещё 1 комментарий
0

Сначала вы можете сохранить всю информацию в сеансе. Затем сделайте свои расчеты и попросите пользователя утвердить информацию. Напишите их из сеанса в базу данных.

0

Вы можете сохранить информацию одним из двух способов: используя сеанс или входы скрытой формы.

Использование сеанса В этом случае было бы полезно использовать сеанс. Итак, когда первая форма отправлена, запустите сеанс с пользователем и сохраните все значения в нем. Затем на странице подтверждения просто отображаются данные. Когда пользователь нажимает "одобрить", это заставляет ваш script хранить информацию, которая уже находится в сеансе. Это хорошо известный метод сохранения информации между запросами.

Использование скрытой формы. Когда вы выходите на страницу одобрения, вы также можете записывать скрытые входы формы вместе с отображаемыми данными подтверждения. Добавив новое поле, чтобы указать, что пользователь одобрил эти данные, ваш script будет записывать только в базу данных, когда видит это значение подтверждения.

Не зная гораздо больше о вашем приложении, я бы предпочел использовать сеансы в этом случае.

  • 0
    что является более надежным?
  • 0
    Это зависит от того, что вы подразумеваете под «надежным». Время ожидания сеанса зависит от конфигурации сервера (около 15 минут). Скрытые формы можно обойти, просто отправив значение «подтверждение» с первой публикацией.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню