开发者

How to display all hidden field values passed from a form all at ONCE in PHP?

Let me explain.

Normally when hidden fields are passed from a form to the page specified in the action of the form, those hidden fields can be accessed on the processing page like so:

The Form:

<form action="process.php" method="POST">
   <input type="text" name="username" />
   <input type="password" name="password" />

   <input type="hidden" name="loginTime" value="1:23PM" />
   <input type="hidden" name="userIp" value="173.23.22.5" />

   <input type="submit" name="submit" value="Submit" />
&l开发者_StackOverflowt;/form>

Processing Page (process.php):

<?php

   if isset($_POST['submit']) {

      echo $_POST['username'];

      echo $_POST['loginTime'];
      echo $_POST['userIp'];
   }

?>

You see how I had to call the two hidden fields by name and individually. Is there any way I can call all hidden fields that are passed to a page from a form all at once despite what the field names of those are or how many there are?

In other words how do I make PHP do this:

// echo the contents of all hidden fields here (if there were any)

EDIT

Additional info:

The form is designed in such a way (not the one above of course) that field names will be of the following sort:

product_name_1
product_quantity_1
product_price_1

product_name_2
product_quantity_2
product_price_2

and so incremented so on...

Depending on the user action there can be 3 hidden fields or thousands, there are no limits.


Make an array of valid hidden field names, then iterate through $_POST and if the $_POST field name is in the array of valid field names, echo them.

$valid = array('first_name', 'last_name');

foreach ( $_POST as $key => $value ) {
    if ( in_array( $key, $valid ) ) {
        echo $_POST[$key];
    }
}


PHP does not care whether the field was hidden or not, HTTP doesn't tell PHP how it appeared on the website.

The closest thing I would come up with was saving all names of the hidden fields inside an array and echoing them all in a loop.


You can try the following:

<form action="process.php" method="POST">
   <input type="text" name="username" />
   <input type="password" name="password" />

   <input type="hidden" name="group_hidden[loginTime]" value="1:23PM" />
   <input type="hidden" name="group_hidden[userIp]" value="173.23.22.5" />

   <input type="submit" name="submit" value="Submit" />
</form>

And then print it:

echo htmlspecialchars(print_r($_POST, true));

This might give you a clue about how to solve this.


there's no way to tell the type of the input built-in, so instead you'll need to come up with a way to identify the ones you want yourself. This can be done either by coming up with a special naming scheme, or by storing a list of the names of the hidden fields in another field. I'd recommend the former option, since you don't have the risk of losing data integrity somehow. Look at using array_filter to parse through the array to get the specially-named fields out.


Maybe, assuming that your hidden fields will be in sequence (i.e. 1,2,3 and not 1,2,4) following all of the end users' actions (adding and taking away fields), you could try something along the lines of

$i = 1;
while(isset($_POST["product_name_$i"]))
{

   echo $_POST["product_name_$i"];
   echo $_POST["product_price_$i"];
   $i++;
}

Or something along those lines?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜