Come mantenere i valori dei parametri GET già impostati sull'invio dei moduli?

Ho un URL: foo.php?name=adam&lName=scott , e in foo.php ho un module che mi dà i valori di rectangleLength e rectangleBreadth con un button di invio.

Quando faccio clic su questo button di invio con l'azione module come $_SERVER['REQUEST_URI'] , ottengo questo URL di risultato: foo.php?rectangleLength=10&rectangleBreadth=5 (questi valori sono stati compilati dall'utente).

Si noti che sto perdendo il mio name valori precedenti e lName dall'URL.

Come posso tenerli?

Inoltre, tieni presente che devo tornare su foo.php e se l'utente vuole submit nuovamente il module, i valori di lunghezza e width dovrebbero cambiare.

Puoi aggiungere due campi nascosti nel module sul primo sito di destinazione, blabla.php nel tuo caso:

 <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> 

Per una soluzione dynamic, utilizzare un ciclo foreach:

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

Puoi considerare di bloccare l'approccio dinamico in un elenco di possibili chiavi conosciute:

 <?php $keys = arrays('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 .'">'; } ?> 

Una soluzione più semplice per mantenere invariato l'URL utilizzando http_build_query

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

Una volta, avevo bisogno di ordinare i risultati in una tabella mantenendo i risultati di ricerca provenienti da GET. Mi è piaciuto così:

 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>"; 

Ci sono diversi modi per farlo. Tutti loro scrivono i parametri che ricevono in un file, memory o un database e li recuperano successivamente con una chiave

Il metodo più semplice è qualcosa di simile a una variabile di session: http://php.net/manual/en/features.sessions.php

La configuration principale è simile a questa (attenzione: questo è un codice non sicuro, assicurati di aggiungere solo le variables di session che vuoi mantenere e disinfettare l'input dell'utente!):

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

e ora, se l'utente non chiude il browser, è ansible accedere a queste variables con $_SESSION[varname];

Il seguente codice funziona per il mio progetto. Spero che aiuti qualcuno. 1. Nel menu (chiamata html) chiamo VendorSearch.php. variabile da vs è usato nell'URL. 2. Il php di destinazione VendorSearch.php svolgerà diversi lavori in base al valore di $ _GET ['fromvs'] 3. In 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. Nel menu (chiamata html) chiamo VendorSearch.php. variabile da vs è usato nell'URL.
  2. Il php di destinazione VendorSearch.php svolgerà diversi lavori in base al valore di $_GET['fromvs']
  3. In VendorSearch.php, aftersession_start (),

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

  4. Usa l'input nascosto per memorizzare la variabile passata dell'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. Ma questo

Segmento in Calling html …. Aggiungi un subappaltatore …. Assegna i contratti di subappaltatore ….. Disconnettersi ….

Segmento nel php di destinazione: 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); }