You can read the source data. For instance:
<fieldset> <legend>Data</legend> <?php $data = file_get_contents("php://input"); echo $data."<br />"; ?> </fieldset> <fieldset> <legend>Form</legend> <form method="post" action="formtest.php"> <input type="checkbox" value="val1" name="option"/><br /> <input type="checkbox" value="val2" name="option"/><br /> <input type="submit" /> </form> </fieldset>
Check both fields and output:
option=val1&option=val2
Here's a live demonstration . All you have to do is parse the string yourself in a suitable format. Here is an example of a function that does something like this:
function parse($data) { $pairs = explode("&", $data); // process all key/value pairs and count which keys // appear multiple times $keys = array(); foreach ($pairs as $pair) { list($k,$v) = explode("=", $pair); if (array_key_exists($k, $keys)) { $keys[$k]++; } else { $keys[$k] = 1; } } $output = array(); foreach ($pairs as $pair) { list($k,$v) = explode("=", $pair); // if there are more than a single value for this // key we initialize a subarray and add all the values if ($keys[$k] > 1) { if (!array_key_exists($k, $output)) { $output[$k] = array($v); } else { $output[$k][] = $v; } } // otherwise we just add them directly to the array else { $output[$k] = $v; } } return $output; } $data = "foo=bar&option=val1&option=val2"; print_r(parse($data));
Outputs:
Array ( [foo] => bar [option] => Array ( [0] => val1 [1] => val2 ) )
There may be several cases where this function does not work as expected, so be careful.
source share