-1

重複の可能性:
phpのグローバル変数が期待どおりに機能しない

Webサイトのすべてのページで実行されるphp関数があります。これは、グローバル変数を使用します。次に例を示します。

$var = "test";
function test() {
    global $var;
    echo $var;
}

これは/anyFile.phpに直接アクセスする場合は正常に機能しますが、Webサイトはhtaccessファイルを使用してURLを次のように書き換えます。

RewriteRule ^action/(.*)$ /index.php?action=$1 [L]

htaccessでURLを書き換えると、関数が動作せず、$varが設定されません。

これは何が起こっている可能性があり、どうすれば修正できますか?(「グローバル」を使用する必要があります。そうしないと、多くのことを再コーディングする必要があります。

4

1 に答える 1

2

[QSA,L]代わりに使用する必要があります[L]

RewriteRule ^action/(.*)$ /index.php?action=$1 [QSA,L]

QSA はQuery String Appendの略で、クエリ文字列 ( ?URL の の後の部分) を PHP スクリプトに転送します。

ちなみに、register_globals ( PHP 5.3 で非推奨になり、PHP 5.4で削除されました) は使用せ、代わりにsuperglobalを使用してください。$_GET

- - 編集 - -

以下のコメントに従ってください ( .htaccess を変更することはできません)。唯一の解決策は、リクエスト URI のクエリ文字列を解析し、それを$_GETスーパーグローバルを使用するのと同じように使用することです。

$queryString = parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY);
parse_str($queryString, $query);
echo $query['action'];

.htaccessただし、修正版を入手することを強くお勧めします。

于 2012-08-29T23:43:22.817 に答える