PHPをアップグレードするだけで、非常に単純なサンプルが正しく動作しません
test.php
<?php
echo "$query";
?>
私が電話するとき
test.php?query=5
表示されるはずです
5
しかし、私が得たのは、$queryが「」であることを意味する何も表示されていません
あなたのコメント歓迎
PHPをアップグレードするだけで、非常に単純なサンプルが正しく動作しません
test.php
<?php
echo "$query";
?>
私が電話するとき
test.php?query=5
表示されるはずです
5
しかし、私が得たのは、$queryが「」であることを意味する何も表示されていません
あなたのコメント歓迎
使ってみて
$query = $_GET['query'];
その新しいセキュリティ機能。以前はレジスタグローバルと呼ばれていました。
http://php.net/manual/en/security.globals.php
この情報を取得するために、$_GET、$_POST、または $_REQUEST グローバル変数を使用する必要はありません。
たとえば、コードは次のようになります
<?php
echo $_GET['query'];
?>
以前の PHP register_globals ディレクティブでは、$REQUEST 配列の要素をグローバル変数として使用できるようにしていました。それがコードが機能した理由です。この機能は PHP 5.3.0 で廃止され、PHP 5.4.0 で削除されました: http://www.php.net/manual/en/ini.core.php#ini.register-globals
使用しないでください。$_GET、$_POST、および $_REQUEST 配列に直接適用します。
あなたのアップグレードは、安全でなく、恐ろしく、臭いを消しましたregister_globals
。あなたが今やらなければならない仕事にもかかわらず、あなたはこれでより良い状態にある.
のすべてのインスタンスを変更する必要があります
$query
に
$_GET['query']
「セキュリティ」の下に費やした時間をファイルします。
使用する必要があります$_GET
URL パラメーターを介して現在のスクリプトに渡される変数の連想配列。
http://www.php.net/manual/en/reserved.variables.get.php
$query = $_GET['query'];