некоторая помощь php в создании страницы «одобрить форму» - PullRequest
0 голосов
/ 16 ноября 2009

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

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

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

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

Спасибо!

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

Ответы [ 3 ]

4 голосов
/ 16 ноября 2009

Один из способов сделать это - переписать каждое значение, которое только что было отправлено в форму утверждения, в виде скрытых входных данных 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 голосов
/ 16 ноября 2009

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

0 голосов
/ 16 ноября 2009

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

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

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

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

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