3

php int64の制限に関連して、URIにint64引数がある場合、GETが誤って数値に変換し、単に文字列として保持するのを防ぐにはどうすればよいですか?

http://some.com?id=1707541557936130

それから

echo $_GET['id'] => 1.7075415579361E+15

これを防ぎ$_GET['id']文字列 1707541557936130にする方法は?

現在の動作方法$_GETは使用できません。自分自身を解析する必要があり$_SERVER["QUERY_STRING"]ます。しかし、phpがいつ変数を取得し、誤って再度変換するかはわかりません。

注:これは、64ビットのphpインストールではなく、32ビットで問題になります。

4

4 に答える 4

4

_GET / _POST/_COOKIEから出てくるものはすべて文字列です。そのデータは、1つとして解釈されるように強制するような操作を行わない限り、数値に変換されません。

echo $_GET['id']; // echoes your big number
echo $_GET['id'] + 0; // forces an int conversion
于 2012-01-03T02:54:52.187 に答える
0

現在のソリューションが機能していない場合は、次のような整数に文字列文字を追加できます。

http://some.com?id=i1707541557936130

さらに、フロートの表示方法の問題である場合は、number_format()を使用できます。

$id = (string) number_format($_GET['id']);
echo $id;
于 2012-01-03T13:53:36.230 に答える
0

これで作業が完了します。

echo (string) $_GET['id'];
于 2012-01-03T02:55:30.157 に答える
0

弾丸をかみ、64ビットをインストールします-とにかくそれはあなたのサーバー上にあるものです

于 2012-01-03T07:39:45.967 に答える