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开发一个网站,基本上使用它自己的服务器处理,所以我不能使用上面的链接。我在不同的目录中有几个网页必须链接到 LoginPage.php,我需要一个标准链接。上面的代码在一个Class中,不同目录下的其他页面都可以调用它。

谁能告诉我如何解决这个问题?

谢谢!

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

如果您使用 Wamp Server 或类似服务器,“ /”是“www”文件夹的文档根目录,因此您必须编写"/yoursitesfoldername/nmc/Admin/LogoutProcessor.php".

于 2014-01-06T16:29:39.913 回答
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 回答