Использование тегов PHP внутри определения href = "" - PullRequest
0 голосов
/ 14 февраля 2012

Я использую простое решение для получения корня сервера, и оно довольно хорошо работает с моими включениями:

<?php $root = $_SERVER['DOCUMENT_ROOT'].'/frizkie'; ?>

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

/main/tools/planners.php

Мои изображения находятся в:

/images/staticons/

И мой код выглядит так:

<td onClick="document.location.href='planners/agility.php';">Contents</a></td>

Я быхотелось бы иметь возможность использовать каталог $ root для части 'planners / agility.php', но делать это так:

onClick="document.location.href='<?php echo $root; ?>/planners/agility.php';"

Заставляет часть onClick вообще не работать.Кроме того, я бы также хотел определить фоновые ячейки таблицы, используя тот же метод, используя переменную $root.Я пытался использовать теги PHP в определении background = "", но изображения не отображаются в Chrome или Firefox - только IE9.

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

$_SERVER['DOCUMENT_ROOT'] - для так называемой маршрутизации на стороне сервера, как вы уже заметили.Вам не нужно помещать это в свою разметку, CSS и JS.Я бы придерживался абсолютных относительных путей, таких как /images/background.jpg (обратите внимание на косую черту).Таким образом, даже если к вашей странице обращаются по URL-адресу, например

http://example.com/blog/123-my-beautiful-post/

, изображение загружается с

http://example.com/images/background.jpg

, а не

http://example.com/images/blog/123-my-beautiful-post/images/background.jpg.

Использование DOCUMENT_ROOT очень помогает при включении нескольких файлов, разбросанных по корню вашего документа - использование относительных путей здесь вызывает головную боль.Если вы действительно хотите, чтобы на ваших страницах были полные URL, попробуйте использовать $_SERVER['SERVER_NAME'], но я действительно не понимаю необходимости делать это.

0 голосов
/ 14 февраля 2012

Когда вы пишете HTML-разметку, не используйте пути к серверам в своих hrefs.Вместо этого hrefs должны быть относительно базы домена вашего сайта.

Используйте корень документа, когда вы хотите загрузить PHP-файлы через require / require_once / include / include_once.

Кроме того, причина того, что ваш код не работал, вероятнее всего потому, что на некоторых установках веб-сервера существует одно из трех условий для корневого документа (задано в Apache httpd.conf):

  1. Не установлено
  2. Есть косая черта
  3. Нет косой черты

Итак, вы должны проверить все три условия и затем решитьСкажем, чтобы всегда иметь косую черту.

Если он не установлен, вы должны явно установить $ docroot для определенной константы, такой как define ("DOCROOT", "/ user / home / jayleno /"), а затем использовать это в своем коде.

$docRoot = $_SERVER['DOCUMENT_ROOT'];
if (strlen($docRoot) <= 0) {
   // you are going to have to hard code it
   $docRoot = "/usr/home/jayleno/";
}
$lastChar = substr($docRoot, -1);
if ($lastChar != '\\' || $lastChar != '/')
   $docRoot .= "/";

$templateRoot = $docRoot . "templates/";
$moduleRoot = $docRoot . "modules/";
.
.
$rootCanal = $docRoot . "mytootheaches/";
...