Intereting Posts
Закройте все открытые обработчики скручивания перед перемещением вперед Передавать массив массива в функцию PostgreSQL Как эффективно использовать try … catch блоки в PHP CodeIditor base url не recongnized в javascript Загрузить изображения с помощью Ajax? Как использовать Apache / PHP для защиты каталогов от пользователей, которые не вошли в систему Избегайте условий гонки в PHP на отправке: Пожалуйста, не нажимайте кнопку «Отправить» более одного раза! Как добавить контакт в список, используя (Отправить сетку) php api Доступ к URL-адресам по адресу www.example.com/page вместо www.example.com/page.php как Json кодировать в yii2? Как изменить размер и преобразовать загруженное изображение в PNG с помощью GD? PHP Почему моя функция дважды возвращает результат массива с разными ключами? php-конкатенация для настройки URL-адреса. Как это сделать? Как сохранить вложение изображений из электронной почты с помощью IMAP и PHP? Шифрование паролей joomla

Как передать данные между страницами в PHP?

В двух словах на «page1.php» у меня есть калькулятор, который состоит из HTML-формы, а затем код PHP суммирует ввод и отображает общую цену. Ниже цены также отображается ссылка на «page2.php», которая содержит форму HTML, в которой они могут вводить свои контактные данные. После отправки формы, которые они сделали на странице «page1.php» в калькуляторе цен, а также информация о контакте на странице «page2.php» отправляются мне по электронной почте, и они перенаправляются на домашнюю страницу.

В электронном письме, которое мне представляется, я получаю контактную информацию с «page2.php», но я ничего не получаю от «page1.php», поэтому переменные не получают правильного представления. В дополнение к PHP на каждой странице я использую скрытые значения в HTML-форме на странице «page2.php», чтобы повторить данные, введенные в HTML-форме на странице «page1.php». Я знаю, что одна из моих проблем заключается в том, что у меня есть пара полей $_GET когда моя форма «post».

Однако, когда я меняю его так, что все $_POST , калькулятор больше не работает. Я попытался привести это в целом с различными фрагментами кода, предложенными другими. Форма на странице «page1.php» имеет 13 полей, названных «один» – «тринадцать». $ total отображает значения 1-13.

 <?php $submit = $_GET['submit']; if($submit == "true") { $total = ($_POST['one'] + $_POST['two'] + $_POST['three'] + $_POST['four'] + $_POST['five'] + $_POST['six'] + $_POST['seven'] + $_POST['eight']+ $_POST['nine'] + $_POST['ten']+ $_POST['eleven'] + $_POST['twelve']+ $_POST['thirteen']); echo " Your Price is \$ " .number_format ($total, 2, '.', ','). "<BR>"; echo ('">Get Your Project Started</a>'); } ?> 

Вторая форма использует скрытые значения для эха информации из page1.php и имеет еще три поля с именем «имя», «электронная почта» и «подробности».

 <?php $to = "jessica@designs.com"; $message = "Pages:\t$_POST[one]\n"; $message .= "Pages:\t$_POST[two]\n"; $message .= "Pages:\t$_POST[three]\n"; $message .= "Ecommerce:\t$_POST[four]\n"; $message .= "No Ecommerce:\t$_POST[five]\n"; $message .= "CMS:\t$_POST[six]\n"; $message .= "No CMS:\t$_POST[seven]\n"; $message .= "Audio or Video:\t$_POST[eight]\n"; $message .= "Flash Intro:\t$_POST[nine]\n"; $message .= "Image Gallery:\t$_POST[ten]\n"; $message .= "Graphic Design or Logo:\t$_POST[eleven]\n"; $message .= "Copy:\t$_POST[twelve]\n"; $message .= "Images:\t$_POST[thirteen]\n"; $message .= "Price Total:\t$_POST[total]\n"; $message .= "Name:\t$_POST[name]\n"; $message .= "Email:\t$_POST[email]\n"; $message .= "\n"; $message .= "\n"; $message .= "Details:\t$_POST[details]\n"; mail($to, $subject, $message, $headers) ; } ?> 

Итак, каков был бы правильный PHP для «page1.php» и «page2.php»? Извините, код такой беспорядок, если кто-то может указать мне в правильном направлении, это было бы здорово.

PHP является апатридом, если вы не сохраните вещи в сеансе (что небезопасно?)

Вам нужно будет сделать page2.php читать все значения из page1.php и хранить их либо в состоянии (сеансе) на стороне сервера, либо в состоянии клиента (файлы cookie или, возможно, скрытые поля в форме)

Если вы хотите любой из этих безопасных или секретных, то вы должны также рассмотреть все это. Ничто из того, что я объяснял, не секретно и не защищено.

EDIT: вот пример page1.php, который отправляет значения page1.php на page2.php в качестве параметров get. Вы можете сделать это со скрытыми полями, куки или сеансами.

Важно помнить, что page2.php полностью не знает о page1.php и не может получить значения, как вы могли бы его программировать. Каждая страница начинается и заканчивается ее жизнью, когда вы видите полную веб-страницу, поэтому вам нужно использовать некоторые дополнительные трюки для сохранения значений. Эти трюки – это сеансы, файлы cookie, сообщения в форме или их получение.

 <html> <head> <title>Page 1</title> </head> <body> <?php //set defaults assuming the worst $total = 0; $one =0; $two=0; //verify we have that value in $__POST if (isset($_POST['submit'])) { $submit = $_POST['submit']; //If it is true, try some math if($submit == "sub-total") { if (isset($_POST['one'])) { $one = $_POST['one']; //Add checks to see if your values are numbers if ( ! is_numeric($one)) { $one = 0;} } if (isset($_POST['two'])) { $two = $_POST['two']; if ( ! is_numeric($two)) { $two = 0;} } $total = $one + $two; echo " Your Price is \$ " .number_format ($total, 2, '.', ','). "<BR>"; } if($submit == "submit" ) { //go to page two, with the total from page1.php passed as a $__GET value header("Location: page2.php?total=".$total); } } ?> <form method="post" action="page1.php?submit=true"> <input type="text" name="one" id="one" value="<?=$one?>"/> <input type="text" name="two" id="two" value="<?=$two?>"/> <input type="submit" name="submit" value="sub-total" /> <input type="submit" name="submit" value="submit" /> </form> </body> </html> 

Вы можете попробовать использовать $_REQUEST вместо $_GET или $_POST – он работает для обоих. Кроме того, если вы поместите <input type='hidden' в форму на стр. 2 с вашими переменными, отправленными со страницы 1, они должны пройти прямо.

ваши страницы php не имеют состояния, поэтому вам нужно получить опубликованные переменные и отправить их через скрытые поля ввода.

 <input type="hidden"..... 

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

Это зависит от атрибута method вашей HTML- form как переменные передаются в ваш PHP-скрипт.

В этом случае похоже, что page1.php не имеет никакого побочного эффекта и просто передает значения, поэтому форма на page1.php должна использовать method=get , а код page2.php который читает эти поля, может найти их в $_GET .

Кнопка Submit на page2.php (предположительно) имеет побочные эффекты на стороне сервера, поэтому она должна использовать method=post , который вы можете прочитать с $_POST на стороне сервера.

Кроме того, посмотрите на источник HTML page2.php после заполнения первой страницы, чтобы проверить, правильно ли переданы значения.

немного поздно в ответ, да, лучший способ – использовать type=hidden как уже упоминали другие.

page1 отправляет _POST на страницу2, который «сохраняет» все это в скрытых полях, поэтому он может отправлять все вместе на финальную (или другую) страницу.

но что более важно, и, перейдя к более широкой теме, рассматривает вопрос о том, зачем использовать страницы для разделения формы!

извините за то, что касается этой темы здесь, мне просто хотелось дать 2 цента.

формы страницы

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

вместо этого использовать новые ресурсы

макет и дизайн могут быть достигнуты с использованием javascript и CSS , которые оба предназначены для этого. даже если вы сделаете так, чтобы пользователь «нажал следующий», используйте dhtml и все в 1 файле. нужна проверка сервера? ajax .

если вы не используете HTML-фреймы (что вам, вероятно, и не нужно), загрузка всей страницы – это избыточная и ненужная загрузка сервера и клиента, которая занимает больше времени при использовании и программировании (чтобы позаботиться о передаче информации о форме с одного места на другое другой).

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