Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to keep already-set GET parameter values on form submission?

I have a URL : foo.php?name=adam&lName=scott, and in foo.php I have a form which gives me values of rectangleLength & rectangleBreadth with a submit button.

When I click this submit button with form action as $_SERVER['REQUEST_URI'], I get this result URL: foo.php?rectangleLength=10&rectangleBreadth=5 (these values have been filled in by the user).

Notice that I am losing my previous values name & lName from the URL.

How can I keep them?

Also, keep in mind that I have to come back to foo.php and if the user wants to submit the form again then the length and breadth values should change.

like image 223
saurabh Avatar asked Aug 26 '11 07:08

saurabh


People also ask

What is a form parameter?

A parameter is a variable whose value can be set at runtime (for example, from the Runtime Parameter Form or the command line). Parameters are especially useful for modifying SELECT statements and setting PL/SQL variables at runtime.

What are query parameters in URL?

Query parameters are a defined set of parameters attached to the end of a url. They are extensions of the URL that are used to help define specific content or actions based on the data being passed. To append query params to the end of a URL, a '? ' Is added followed immediately by a query parameter.


1 Answers

You can add two hidden fields in the form on the first target site, blabla.php in your case:

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

For a dynamic solution, use a foreach loop:

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

You may consider locking the dynamic approach down to a list of known possible keys:

<?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 .'">'; } ?> 
like image 56
Emil Vikström Avatar answered Oct 08 '22 13:10

Emil Vikström