Как сохранить уже установленные значения параметра GET при отправке формы?

У меня есть URL: foo.php?name=adam&lName=scott , а в foo.php У меня есть форма, которая дает мне значения rectangleLength & rectangleBreadth с кнопкой отправки.

Когда я нажимаю эту кнопку отправки с действием формы как $_SERVER['REQUEST_URI'] , я получаю этот URL-адрес результата: foo.php?rectangleLength=10&rectangleBreadth=5 (эти значения были заполнены пользователем).

Обратите внимание, что я теряю свои прежние значения name & lName из URL.

Как я могу их хранить?

Кроме того, имейте в виду, что я должен вернуться к foo.php и если пользователь хочет снова отправить форму, тогда значения длины и ширины должны измениться.

Solutions Collecting From Web of "Как сохранить уже установленные значения параметра GET при отправке формы?"

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

 <form ...> <input type="hidden" name="name" value="<?php echo htmlspecialchars($_GET['name']);?>"> <input type="hidden" name="lName" value="<?php echo htmlspecialchars($_GET['lName']);?>"> <!-- rest of the form here --> </form> 

Для динамического решения используйте цикл foreach:

 <?php foreach($_GET as $name => $value) { $name = htmlspecialchars($name); $value = htmlspecialchars($value); echo '<input type="hidden" name="'. $name .'" value="'. $value .'">'; } ?> 

Вы можете рассмотреть возможность блокировки динамического подхода до списка известных возможных ключей:

 <?php $keys = array('name', 'lName', ...); foreach($keys as $name) { if(!isset($_GET[$name])) { continue; } $value = htmlspecialchars($_GET[$name]); $name = htmlspecialchars($name); echo '<input type="hidden" name="'. $name .'" value="'. $value .'">'; } ?> 

Более простое решение по сохранению URL-адреса без изменений с помощью http_build_query

  <form action="<?php echo $_SERVER["PHP_SELF"] . '?'.http_build_query($_GET); ?>" ... .. .. 

Однажды мне нужно было отсортировать результаты в таблице, чтобы результаты поиска поступали от GET. Мне это понравилось:

 unset($_GET['sort']); // sort param is removed, otherwise there will be created many sort params $url = http_build_query($_GET); echo "<a href='?".$url."&sort=title'>Title</a>"; echo "<a href='?".$url."&sort=author'>Author</a>"; с unset($_GET['sort']); // sort param is removed, otherwise there will be created many sort params $url = http_build_query($_GET); echo "<a href='?".$url."&sort=title'>Title</a>"; echo "<a href='?".$url."&sort=author'>Author</a>"; 

Существуют разные способы сделать это. Все они записывают параметры, которые они получают в файл, память или базу данных, и получают их позже с помощью ключа

Самый простой способ – это что-то вроде переменной сеанса: http://php.net/manual/en/features.sessions.php

Основная настройка – это что-то вроде этого (предостережение: это небезопасный код, убедитесь, что вы только добавляете переменные сеанса, которые хотите сохранить, и дезинформируйте ввод пользователя!):

 <?php session_start(); foreach ($_GET as $key=>$value) { $_SESSION[$key]=>$value; } ?> 

и теперь, пока пользователь не закрывает браузер, вы можете получить доступ к этим переменным с помощью $_SESSION[varname];

Следующий код работает для моего проекта. Надеюсь, это поможет некоторым. 1. В меню (вызов html) я вызываю VendorSearch.php. переменная fromvs используется в URL. 2. Целевой php VendorSearch.php будет выполнять разные задания на основе значения $ _GET ['fromvs'] 3. В VendorSearch.php, aftersession_start (),

 $srchfor =""; $fromwhat = $_GET['fromvs']; $_SESSION['fromwhat'] = $fromwhat; //save value to $VS $vs = $fromwhat; 3. Use hidden input to store URL passed variable <div style='position: absolute; top: 10px; left: 400px;'><input type='hidden' hidden='hidden' id='fromvs' name='fromvs' value="<?php echo $_SESSION['fromwhat']; ?>"></div> 4. But this thie field's value may lost after clicking button "srchvnd". So use a function to reset $_SESSION['fromwhat']; if (isset($_POST['srchvnd'])) { $vs = $_POST['fromvs']; somefunction($vs); } -----------------Source code---------------------- Segment in Calling html .... <body> <div style=" position: absolute; top: 1px; left: 5px; height:740px; width:205px; border-radius: 10px;" > <!-- Start css3menu.com BODY section --> <ul id="css3menu1" class="topmenu"> <li class="topfirst"><a href="VendorSearch.php?fromvs=V" target="I1" style="width:183px;">Add a Subcontractor </a></li> .... <li class="topmenu"><a href="VendorSearch.php?fromvs=S" target="I1" style="width:183px;">Assign Subcontractor Contracts</a></li> ..... <li class="toplast"><a href="login.php" target="_self" style="width:183px;">Log Out</a></li> </ul> .... </div> Segment in target php: VendorSearch.php <?php //VendorSearch.php //http://mted202.mtaent.org:9051/ocr/login.php rweinbau require_once('dbinfo.php'); session_start(); $c = oci_pconnect("ocr","ocrmta","HQT4"); oci_set_client_identifier($c, $_SESSION['username']); $username = htmlentities($_SESSION['username'], ENT_QUOTES); ..... $srchfor =""; $fromwhat = $_GET['fromvs']; $_SESSION['fromwhat'] = $fromwhat; $vs = $fromwhat; if (isset($_POST['srchvnd'])) { $vs = $_POST['fromvs']; somefunction($vs); } else { ; } ?> <body> <form class="vfrmsrch" name="vndsearch" id="vndsearch" action="VendorSearch.php?fromvs='<?php echo $fromwhat; ?>'" method="POST"> <div style='position: absolute; top: 10px; left: 400px;'><input type='hidden' hidden='hidden' id='fromvs' name='fromvs' value="<?php echo $_SESSION['fromwhat']; ?>"></div> ...... <td><input type="submit" class="slbt" name="srchvnd" id ="srchvnd" vaue="Search"></input></td> ...... </form> ....... </body> </html> <?php function somefunction($vvs){ //$msg = "We are inf somefunction() function </a></div><br>"; // echo "<div style='position: absolute; top: 100px; left: 10px;'><a style='color:blue'>".$msg; $_SESSION['fromwhat'] = $vvs; ............ oci_close($c); } 
  1. В меню (вызов html) я вызываю VendorSearch.php. переменная fromvs используется в URL.
  2. Целевой php VendorSearch.php будет выполнять разные задания на основе значения $_GET['fromvs']
  3. В VendorSearch.php, aftersession_start (),

    $srchfor =""; $fromwhat = $_GET['fromvs']; $_SESSION['fromwhat'] = $fromwhat; $vs = $fromwhat;

  4. Использовать скрытый ввод для хранения переданной переменной URL

    <div style='position: absolute; top: 10px; left: 400px;'><input type='hidden' hidden='hidden' id='fromvs' name='fromvs' value="<?php echo $_SESSION['fromwhat']; ?>"></div>

  5. Но это

Сегмент в Calling html …. Добавить субподрядчика …. Назначить контракты субподрядчиков ….. Выйти ….

Сегмент в целевом php: VendorSearch.php

 <?php //VendorSearch.php //http://mted202.mtaent.org:9051/ocr/login.php rweinbau require_once('dbinfo.php'); session_start(); $c = oci_pconnect("ocr","ocrmta","HQT4"); oci_set_client_identifier($c, $_SESSION['username']); $username = htmlentities($_SESSION['username'], ENT_QUOTES); ..... $srchfor =""; $fromwhat = $_GET['fromvs']; $_SESSION['fromwhat'] = $fromwhat; $vs = $fromwhat; if (isset($_POST['srchvnd'])) { $vs = $_POST['fromvs']; somefunction($vs); } else { ; } ?> <body> <form class="vfrmsrch" name="vndsearch" id="vndsearch" action="VendorSearch.php?fromvs='<?php echo $fromwhat; ?>'" method="POST"> <div style='position: absolute; top: 10px; left: 400px;'><input type='hidden' hidden='hidden' id='fromvs' name='fromvs' value="<?php echo $_SESSION['fromwhat']; ?>"></div> ...... </form> ....... </body> </html> <?php function somefunction($vvs){ //$msg = "We are inf somefunction() function </a></div><br>"; // echo "<div style='position: absolute; top: 100px; left: 10px;'><a style='color:blue'>".$msg; $_SESSION['fromwhat'] = $vvs; ............ oci_close($c); }