1
        $username;
        $welcomeMessage;
        if( isset( $_SESSION['username'] ) ){
            $username = $_SESSION['username'];
            $welcomeMessage = "Hello $username! | ";
            $welcomeMessage .= '<a href="'.$_SERVER['DOCUMENT_ROOT'].'/nmc/Admin/LogoutProcessor.php">Logout</a>';
        } else {
            $welcomeMessage = "Welcome | ";
            $welcomeMessage .= '<a href="'.$_SERVER['DOCUMENT_ROOT'].'/nmc/Admin/LoginPage.php">Login</a>';
        }

上記のコードは「file:/// C:/xampp/htdocs/nmc/Admin/LoginPage.php」を返します

私はxamppを使用してWebサイトを開発しており、基本的に独自のサーバー処理を使用しているため、上記のリンクを使用できません。LoginPage.phpにリンクする必要のあるいくつかのWebページが異なるディレクトリにあり、標準のリンクが必要です。上記のコードは、異なるディレクトリ内の他のページが呼び出すことができるクラスにあります。

誰かがこの問題を解決する方法を教えてもらえますか?

ありがとう!

4

5 に答える 5

14

$_SERVER['DOCUMENT_ROOT'] が返す

サーバーの構成ファイルで定義されている、現在のスクリプトが実行されているドキュメント ルート ディレクトリ。

$_SERVER['HTTP_HOST']次のような絶対パスまたは絶対パスを使用できます<a href="/nmc/Admin/LoginPage.php">Login</a>

于 2012-11-15T09:53:28.483 に答える
8

このようなシナリオでは、常に config.php ファイルを作成してルート ディレクトリに保存することをお勧めします。構成ファイルでは、いくつかのパラメーターを定義します。

すべてのページでこの構成ファイルを呼び出します。設定ファイルは次のようになります。

define('APP_NAME',"beta");  
define('HTTP_SERVER', 'http://localhost/'); 
define('SITE_NAME', 'http://localhost/');   
define('DOCUMENT_ROOT',$_SERVER['DOCUMENT_ROOT'].APP_NAME); 

複数の場所で使用されると思われる画像、css などのディレクトリを定義することもできます。

だから代わりに

$welcomeMessage .= '<a href="'.$_SERVER['DOCUMENT_ROOT'].'/nmc/Admin/LogoutProcessor.php">Logout</a>';

あなたは書ける、

$welcomeMessage .= '<a href="'.HTTP_SERVER.'/nmc/Admin/LogoutProcessor.php">Logout</a>';
于 2012-11-15T09:58:09.997 に答える
5
 $_SERVER['DOCUMENT_ROOT']

物理ファイル システム パスを返します。HTTP URL ではありません。

絶対 URL パスを使用するには、それを削除してみてください。

 <a href="/nmc/Admin/LoginPage.php">Login</a>

または、代わりに $_SERVER['HTTP_HOST'] を使用してみてください。

ところで、$_SERVER のドキュメントを読んでください。

于 2012-11-15T09:54:40.513 に答える
0

これをどこでも使用するサイトを継承したので、xampp でテストするときに、最終的にサイトをロードするための仮想ホストを作成しました。

詳細については、この記事を参照してください: http://www.dreamincode.net/forums/topic/307265-change-serverdocument-root-path-for-xammp-light/

これが私のhttpd-vhosts.confファイルです:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "C:/xampp/htdocs/examplesite/nested/path/to/content"
    ServerName example.localhost
    ErrorLog "logs/example.localhost-error.log"
    CustomLog "logs/example.localhost-access.log" common
</VirtualHost>
于 2016-06-13T20:11:32.683 に答える