Postで送信されるすべての変数を挿入する必要があります。これらはそれぞれユーザーを表すチェックボックスでした。
GETを使用すると、次のような結果が得られます。
?19=on&25=on&30=on
データベースに変数を挿入する必要があります。
POSTで送信されたすべての変数を取得するにはどうすればよいですか?コマまたは何かで区切られた配列または値として?
変数$_POST
が自動的に入力されます。
var_dump($_POST);
を試して内容を確認してください。
次のような個々の値にアクセスできます:echo $_POST["name"];
もちろん、これは、フォームが典型的なフォームエンコーディング(enctype=”multipart/form-data”
投稿データが別の形式(JSONやXMLなど)の場合、次のようなことができます:
$post = file_get_contents('php://input');
$post
には生データが含まれます。
標準の$_POST
変数を使用していると仮定すると、チェックボックスが次のようにチェックされているかどうかをテストできます。
if(isset($_POST['myCheckbox']) && $_POST['myCheckbox'] == 'Yes')
{
...
}
チェックボックスの配列がある場合(例:.
<form action="myscript.php" method="post">
<input type="checkbox" name="myCheckbox[]" value="A" />val1<br />
<input type="checkbox" name="myCheckbox[]" value="B" />val2<br />
<input type="checkbox" name="myCheckbox[]" value="C" />val3<br />
<input type="checkbox" name="myCheckbox[]" value="D" />val4<br />
<input type="checkbox" name="myCheckbox[]" value="E" />val5
<input type="submit" name="Submit" value="Submit" />
</form>
チェックボックス名で[ ]
を使用すると、選択された値が配列としてPHPスクリプトによってアクセスされることを示します。この場合、$_POST['myCheckbox']
は単一の文字列を返しませんが、チェックされたチェックボックスのすべての値で構成される配列を返します。
たとえば、すべてのボックスをオンにすると、$_POST['myCheckbox']
は{A, B, C, D, E}
で構成される配列になります。値の配列を取得して表示する方法の例を次に示します。
$myboxes = $_POST['myCheckbox'];
if(empty($myboxes))
{
echo("You didn't select any boxes.");
}
else
{
$i = count($myboxes);
echo("You selected $i box(es): <br>");
for($j = 0; $j < $i; $j++)
{
echo $myboxes[$j] . "<br>";
}
}
$_POST
変数からそれらにアクセスできるはずです:
foreach ($_POST as $param_name => $param_val) {
echo "Param: $param_name; Value: $param_val<br />\n";
}
非推奨であり、スーパーグローバルに直接アクセスすることは望まれません(PHP 5.5以降だと思いますか?)
現代のすべてのIDEは以下を示します。
Superglobalsに直接アクセスしないでください。いくつかのフィルター関数を使用します(例:
filter_input
)
このソリューションでは、すべてのリクエストパラメータを取得するには、メソッドfilter_input_array
を使用する必要があります
入力メソッドからすべてのパラメーターを取得するには、次を使用します。
$myGetArgs = filter_input_array(INPUT_GET);
$myPostArgs = filter_input_array(INPUT_POST);
$myServerArgs = filter_input_array(INPUT_SERVER);
$myCookieArgs = filter_input_array(INPUT_COOKIE);
...
これで、var_dump
またはforeach
- Loopsで使用できます
うまくいかないのは、この方法で$ _REQUESTスーパーグローバルにアクセスすることです。それはすべてNULL
を返し、それは正しいです。
すべての入力パラメータを取得する必要があり、異なるメソッドを使用する場合は、次のメソッドのようにそれらをマージします。
function askForPostAndGetParams(){
return array_merge (
filter_input_array(INPUT_POST),
filter_input_array(INPUT_GET)
);
}
編集:このメソッドの拡張バージョン(要求メソッドの1つが設定されていない場合にも機能します):
function askForRequestedArguments(){
$getArray = ($tmp = filter_input_array(INPUT_GET)) ? $tmp : Array();
$postArray = ($tmp = filter_input_array(INPUT_POST)) ? $tmp : Array();
$allRequests = array_merge($getArray, $postArray);
return $allRequests;
}
$_POST
配列のようなものですか?
http_build_query($_POST)
を使用して、それらを再びvar=xxx&var2=yyy
文字列で取得できます。または、単にprint_r($_POST)
で、そこにあるものを確認します。
なぜこれは簡単ですか?
extract($_POST);
これを使用すると、すべてのポスト変数を取得できます
print_r($_POST)