$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>'; }
Приведенный выше код возвращает «файл: /// C: /xampp/htdocs/nmc/Admin/LoginPage.php»
Я использую xampp для разработки веб-сайта, в основном использует собственную обработку сервера, поэтому я не могу использовать указанную выше ссылку. У меня есть несколько веб-страниц в разных каталогах, которые должны ссылаться на LoginPage.php, и мне нужна стандартная ссылка. Вышеприведенный код находится в классе, где его могут вызывать другие страницы в разных каталогах.
Может ли кто-нибудь сказать мне, как решить эту проблему?
Благодаря!
$ _SERVER ['DOCUMENT_ROOT'] возвращает
Корневой каталог документа, под которым выполняется текущий скрипт, как определено в конфигурационном файле сервера.
Вы можете использовать $_SERVER['HTTP_HOST']
или абсолютные пути, такие как <a href="/nmc/Admin/LoginPage.php">Login</a>
В таких сценариях всегда лучше создавать файл 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>';
$_SERVER['DOCUMENT_ROOT']
возвращает путь физической файловой системы. Это не URL-адрес HTTP.
Попробуйте удалить его, чтобы использовать абсолютный URL-адрес:
<a href="/nmc/Admin/LoginPage.php">Login</a>
или попробуйте вместо этого использовать $ _SERVER ['HTTP_HOST'].
BTW, прочитайте документацию $ _SERVER .
Если вы используете Wamp Server или аналогичный, « /
» – это корень документа в папке «www» , поэтому вам нужно написать "/yoursitesfoldername/nmc/Admin/LogoutProcessor.php"
.
Я унаследовал сайт, который использовал это везде, поэтому, когда я пошел тестировать его с помощью 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>