Динамическое получение пути к файлу

#php #html

#php #HTML

Вопрос:

Я создаю веб-сайт, и я переместил все содержимое HTML <head> в header.php файл, в котором я ссылаюсь на свои таблицы стилей и т.д..

На других моих страницах я включаю этот документ. Но когда я включаю его на страницах, которые находятся во вложенной папке, ссылка на таблицу стилей больше не является правильной, я решил это, просто скопировав ссылку и добавив ../ , что мне было интересно, есть ли лучший способ сделать это? как динамически получить правильный путь? Без использования абсолютного пути, например, я хочу иметь возможность перемещать папку проекта и при этом работать.

header.php

 <?php
session_start();
?>

<!DOCTYPE html>
<html lang="nb" dir="ltr">  
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta charset="utf-8">
  
    <!-- CSS -->
    <link rel="stylesheet" href="css/reset.css">
    <link rel="stylesheet"  type="text/css" href="./css/style.css?<?php echo time(); ?>">
    <link rel="stylesheet"  type="text/css" href="../css/style.css?<?php echo time(); ?>">
    <link rel="stylesheet"  type="text/css" href="../../css/style.css?<?php echo time(); ?>">

    <!-- Title -->
    <title>Inventar</title>
</head>
<body>
    
  

И тогда у меня есть:

 <?php
include "header.php";
?>
  

на всех моих страницах.

Комментарии:

1. Ваша проблема с путями связана с использованием относительного пути, а не абсолютного пути. Вам нужно указать путь ко всем вашим ссылкам с абсолютным адресом, основанным на корне домена вашего веб-сайта. Итак, предположим, что у вас есть www.mydomain.org/css/style.css , ваш включенный PHP-файл должен иметь <link rel="stylesheet" type="text/css" href="/css/style.css"> , начиная с / указания, что он начинается в корне домена. Это означает, что независимо от того, где вызывается этот PHP include, он всегда ссылается на правильный адрес.

Ответ №1:

изменить header.php чтобы

 <?php
session_start();
?>

<!DOCTYPE html>
<html lang="nb" dir="ltr">  
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta charset="utf-8">
  
    <!-- CSS -->
    <link rel="stylesheet" href="<?=$tempPath;?>/css/reset.css">
    <link rel="stylesheet"  type="text/css" href="<?=$tempPath;?>/css/style.css?<?php echo time(); ?>">
    <!-- Title -->
    <title>Inventar</title>
</head>
<body>
  

всякий раз, когда вы включаете add path, определите переменную

 <?php
 $tempPath="../";//like this add path according to the file
include "header.php";
?>
  

Также при необходимости вы можете использовать dirname(__FILE__) , чтобы вы могли определить путь из header.php

Комментарии:

1. Спасибо!, и раздражает, и успокаивает, когда решение настолько простое

2. Не делая это точно так, нет, но достаточно близко, чтобы я понял это, я просто создал переменную в своем конфигурационном файле с именем $projectPath=dirname( FILE ); затем я просто ссылаюсь на $projectPath /css / style.css

3. Lol два человека по имени Мартин, сбивают с толку