PHP自動的に“ GET”変数
-
06-07-2019 - |
質問
会社の新しいWebサイトを設計しており、過去にすべてのサイトで使用していたスイッチナビゲーションを実装しようとしています。
<?php
switch($x) {
default:
include("inc/main.php");
break;
case "products":
include("inc/products.php");
break;
}
?>
何らかの理由でindex.php?x = productsにアクセスしても何も起こりません。それでもinc / main.phpが表示されます。つまり、URLからX変数が検出されません。これはグローバル変数と関係がありますか?
解決
はい、PHPの設定は正しく無効になっています。 register_globals
は非常に安全ではないためです。
ただ置く:
$x = はい、PHPの設定は正しく無効になっています。 register_globals
は非常に安全ではないためです。
ただ置く:
<*>
スクリプトの上部。
GET
HTTPメソッドに対してのみこれを機能させたい場合は、 $ _ GET
を使用することもできます。 $ _ REQUEST
はなんとなく安全ではないと主張する人もいますが、それを裏付ける証拠はありません。
REQUEST['x']
スクリプトの上部。
GET
HTTPメソッドに対してのみこれを機能させたい場合は、 $ _ GET
を使用することもできます。 $ _ REQUEST
はなんとなく安全ではないと主張する人もいますが、それを裏付ける証拠はありません。
他のヒント
以前のWebホストはすべて register_globals を使用していたようで、コードはこれに依存しています。これは危険の設定であり、PHP 6.0で正しく削除されました!代わりに switch($ _ GET ['x']){
を使用してください。
これらの変数を読み取るには、$ _ GETを使用する必要があります。 register_globals という非推奨の関数がありますが、これは絶対に使用しないことをお勧めします潜在的なセキュリティリスク。
http://php.net/manual/es/function.extractを使用できます.php は、必要に応じて変数を抽出しますが、これにより、ユーザーがスクリプトで必要なコンテンツを使用して変数を設定できるため、register_globalsを使用するのと同じくらい安全ではありません