$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,我需要一个标准链接。上面的代码在一个类中,不同目录中的其他页面可以调用它。
有谁能告诉我如何解决这个问题?
谢谢!
答案 0 :(得分:13)
$ _ SERVER ['DOCUMENT_ROOT']返回
正在执行当前脚本的文档根目录,如服务器配置文件中所定义。
您可以使用$_SERVER['HTTP_HOST']
或绝对路径,例如<a href="/nmc/Admin/LoginPage.php">Login</a>
答案 1 :(得分: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>';
答案 2 :(得分:5)
$_SERVER['DOCUMENT_ROOT']
返回物理文件系统路径。它不是HTTP URL。
尝试将其删除以使用绝对网址路径:
<a href="/nmc/Admin/LoginPage.php">Login</a>
或尝试使用$ _SERVER ['HTTP_HOST']代替。
答案 3 :(得分:0)
如果您使用的是Wamp Server或类似文件,“/
”是“www”文件夹的文档根目录,那么您必须编写"/yoursitesfoldername/nmc/Admin/LogoutProcessor.php"
。< / p>
答案 4 :(得分: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>