0

これまで動作したことがない (私のコードではない) PHP ファイルをデバッグしていますが、動作していると思われます。

のサンプル コード スニペットmyfile.php:

<html>
<body>
<p>
<?
    echo $Year;
?>
</p>
</body>
</html>

配線方法から、コードはクエリ文字列 (HTTP GET) から Year を取得するようにセットアップされているように見えます: http://server.com/myfile.php?Year=2010

これはおそらく以前は機能していましたが、現在は機能していません。

これを制御するための PHP 設定はありますか? これは PHP バージョンで無効になった「機能」でしたか? 外部で使用される GET 変数を見たことがありません$_GET

4

2 に答える 2

0

以前のサーバーは register globalで設定されていたようです

http://www.php.net/manual/en/ini.core.php#ini.register-globals

http://php.net/manual/en/security.globals.php

注:この機能は PHP 5.3.0 で非推奨となり、PHP 5.4.0 で削除されました。

非推奨で安全でない機能をサポートするようにサーバー構成を変更する代わりに、$_GETグローバルにアクセスしてコードを修正します。

<?php 
$Year = isset($_GET['Year']) ? $_GET['Year'] : null;
?>

<html>
<body>
<p>
<?php
    echo htmlspecialchars($Year);
?>
</p>
</body>
</html>
于 2013-09-20T01:59:12.933 に答える
0

PHP ディレクティブregister_globalsは、クエリ文字列を同じ名前のグローバル変数に自動的にデコードする機能をオン/オフします。多くの人々の意見では、変数は明確な起源や値を持たずに現れる可能性があるため、これは恐ろしい考えでした。

以前はデフォルトで でしたが、PHP 4.2 でonに変更されました。offPHP.INI で有効にすることもできます。PHP5.3 で廃止され、PHP 5.4 で削除されました。

コードが機能していたのに現在は機能していない場合は、バージョンの変更 (PHP 5.4 への変更) を探すか、php.ini の内容を確認してください。

いずれにせよ、コードを見ている場合は、今が への参照に変更して$_GET無効にする良い機会かもしれませんregister_globals

于 2013-09-20T02:04:30.603 に答える