DOCUMENT_ROOT открытие файла вместо указания абсолютного URL в эхо - PullRequest
0 голосов
/ 07 июля 2019

Я работаю над панелью навигации, и моя структура каталогов выглядит так:

-- localhost
  |- navbar.php
  |- file1.php
  |- file2.php
  |-- AttendanceFolder
    |- file3.php

На панели навигации я назначил URL-адреса, например:

<a href="<?php $_SERVER['DOCUMENT_ROOT'] ?>/file1.php">File1</a>

<?php
   if(condition) 
   { 
      echo "<a href='" . $_SERVER['DOCUMENT_ROOT'] . "/file2.php'>File2</a>";
   }
?>

<a href="<?php $_SERVER['DOCUMENT_ROOT'] ?>/AttendanceFolder/file3.php">File3</a>

Моя проблемаявляется то, что для file1 и file3 , он правильно показывает URL-адреса на всех страницах, таких как localhost/file1.php и localhost/AttendanceFolder/file3.php, но для file2.php , этодавая мне абсолютный путь к каталогу Windows Explorer и читая его в виде файла:

file:///C:/xampp/htdocs/file2.php

и, естественно, я не могу получить доступ к этой странице, так как она не обрабатывается сервером.Есть ли способ решить эту проблему?Я попытался найти его, но не могу найти аналогичную проблему с исправлением.Любая помощь будет очень признательна.

1 Ответ

1 голос
/ 07 июля 2019

Если вы не используете команду echo, в вывод ничего не записывается.Так что для file1.php и file2.php он игнорирует $_SERVER['DOCUMENT_ROOT'].Ваш код эквивалентен:

<a href="/file1.php">File1</a>

<?php
   if(condition) 
   { 
      echo "<a href='" . $_SERVER['DOCUMENT_ROOT'] . "/file2.php'>File2</a>";
   }
?>

<a href="/AttendanceFolder/file3.php">File3</a>

Значение $_SERVER['DOCUMENT_ROOT'] равно C:/xampp/htdocs, поэтому его помещают в URL file2.php.

Практически никогда не подходит для использования DOCUMENT_ROOT в URL.Это абсолютный путь, локальный для сервера, но URL-адреса, используемые клиентами, должны быть путями относительно корня документа, не включая его.Эта переменная полезна только при локальном доступе к файлам из PHP.

Поэтому измените file2.php на просто:

<?php
   if(condition) 
   { 
      echo "<a href='/file2.php'>File2</a>";
   }
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...