7

現在、アプリケーションの構成ファイルに次のものがあります。

define('DOCROOT', dirname(__FILE__).DIRECTORY_SEPARATOR);
define('WEBROOT', 'http://localhost/samples/');

最初の行は完全に機能します。構成ファイルをどこにでも含めて、DOCROOT定数を期待どおりに使用できます。

2 行目も同様に機能しますが、ハードコーディングされているため、このファイルを Web サーバーにアップロードすると、間違ったものになります。そこにあるはずですhttp://samples.example.com。このハードコーディングを何らかの形で防止する良い方法はありますか? どこかに何かをハードコーディングしなければならないと思います。

4

5 に答える 5

3

次のコードを使用して、ベース URL を見つけます。

function getBaseURL() {
    return 'http' . (isset($_SERVER['HTTPS']) ? 's' : '') . '://'
         . $_SERVER['HTTP_HOST']
         . rtrim(dirname($_SERVER['SCRIPT_NAME']), '/\\')
         . '/'
    ;
}
于 2011-07-04T17:20:52.690 に答える
2
define('WEBROOT', 'http://'.$_SERVER['HTTP_HOST'].'/');
于 2011-07-04T17:03:17.270 に答える
1

さらに一歩進んで、ユーザーがHTTPS経由でアクセスしている場合は、HTTPSを指定することができます。

    if (isset($_SERVER["HTTPS"]) && $_SERVER['HTTPS'] == 'on') {
            $target_url = "https://" . $_SERVER["SERVER_NAME"];
    } else {
            $target_url = "http://" . $_SERVER["SERVER_NAME"];
    }
   define('WEBROOT', $target_url);
于 2011-07-04T17:26:19.377 に答える
0
'http://'.$_SERVER['HTTP_HOST']. str_replace(str_replace("\\","/",str_replace(realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR, "", realpath($_SERVER['SCRIPT_FILENAME']))), "", $_SERVER['PHP_SELF']);

ローカルホストでテストしました。設定ファイルに入れます。

于 2011-07-04T17:29:43.227 に答える
0

これを「ハッキング」する 1 つの方法は、外部の要求 IP を確認することです。IP が127.0.0.1WEBROOT を として定義するhttp://localhost/samples場合、そうでない場合は次のように定義します。http://samples.example.com

于 2011-07-04T17:07:24.590 に答える