Sie können die Rohpostdaten lesen. Zum Beispiel:
<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>
prüfen beiden Boxen und der Ausgang werden sein:
option=val1&option=val2
hier ein live demo sind. Alles, was Sie dann tun müssen, ist, die Saite selbst in ein geeignetes Format zu zerlegen. Hier ist ein Beispiel einer Funktion, die so etwas tut:
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));
Ausgänge:
Array
(
[foo] => bar
[option] => Array
(
[0] => val1
[1] => val2
)
)
Es könnte ein paar Fälle, in denen diese Funktion nicht wie erwartet allerdings nicht funktioniert, so vorsichtig sein.
Irgendein Grund für das Wiki? –
Ian, meinst du das Community Wiki zu aktivieren? Ich mache es auch möglich, damit die Leute die Frage verbessern können, wie sie es für richtig halten. – avernet