3

私は自分の会社の新しい 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 変数が検出されていません。これはグローバル変数と関係がありますか?

4

4 に答える 4

16

はい、PHP 構成は正しくregister_globalsオフになっています。これは非常に安全ではないためです。

ただ置く:

$x = $_REQUEST['x']

スクリプトの上部にあります。

これをHTTP メソッド$_GETに対してのみ機能させたい場合にも使用できます。GET私は何人かの人々がそれ$_REQUESTがどういうわけか安全ではないと主張しているのを見てきましたが、それを裏付ける証拠はありません.

于 2008-11-03T11:40:11.667 に答える
5

以前のウェブホストはすべてregister_globalsを使用していたようで、コードはそれに依存しています。これは危険な設定であり、PHP 6.0 で当然削除されました! switch($_GET['x']) {代わりに使用してください。

于 2008-11-03T11:41:19.667 に答える
1

これらの変数を読み取るには、$_GET を使用する必要があります。register_globalsという非推奨の関数がありますが、潜在的なセキュリティ リスクであるため、これを使用することは絶対にお勧めしません。

于 2008-11-03T11:41:06.033 に答える
0

必要に応じてhttp://php.net/manual/es/function.extract.phpを使用して変数を抽出できますが、これにより、すべてのユーザーがスクリプトで必要なコンテンツで変数を設定できることに注意してください。これにより、 register_globals を使用するのと同じくらい安全ではなくなります

于 2011-08-23T07:42:33.683 に答える