PHP では、グローバル $_POST 配列の値を配列または文字列以外にすることはできますか?
目標は、すべてがスクリプト内の配列または文字列以外のものであるかどうかを確認する必要がないようにすることです。変数の型がわかっていれば、奇妙な検証を行う必要はありません。文字列が必要な場合は、文字列であることを確認するためにすべてを文字列にキャストする必要はありません。
PHP では、グローバル $_POST 配列の値を配列または文字列以外にすることはできますか?
目標は、すべてがスクリプト内の配列または文字列以外のものであるかどうかを確認する必要がないようにすることです。変数の型がわかっていれば、奇妙な検証を行う必要はありません。文字列が必要な場合は、文字列であることを確認するためにすべてを文字列にキャストする必要はありません。
$_POST["key"] = true;
var_dump($_POST["key"]); // bool(true)
ただし、環境によって設定される値は文字列です。
ドキュメントに従ってhttp://php.net/manual/en/reserved.variables.post.php
An associative array of variables passed to the current script via the HTTP POST method.
したがって、送信されるすべてのデータは、キーと値のペアの連想配列になります。数値 (int、float など)、文字列、配列 (数値または文字列)、およびオブジェクトのデータ型があります。
消去法を使用して、サポートされているデータ型からオブジェクトを削除できます。残りは、文字列、数値、および配列です。
フォームを見ると、入力フィールドは文字列を受け取っており、入力フィールドに入力された値が数値または文字列であるという兆候はありません。したがって、安全のために、投稿されるすべての値は文字列になっています。要素の配列にも文字列値があります。
$_POST で値を取得すると、それは単なる配列であり、いつでもオーバーライドできます
$_POST['username'] = 1;
var_dump($_POST['username']); // int (1)
これが意味をなすことを願っています
好きなようにキャストできます^^
intval($_POST['INTEGER']);
or simply
(int)$_POST['int']