Gebruik van compleet adres
Zoiets als dit:
Code (php)
1
<link rel="icon" href="/home/*******/*********/*******/public_html/boom/images/favicon.ico" type="image/x-icon">
Gewijzigd op 15/12/2015 13:55:25 door J C
The /home path is not the destination of the $_SERVER['DOCUMENT_ROOT']. The browser at the client-side can't locate this path.
Gewijzigd op 15/12/2015 13:37:41 door - Ariën -
And besides that ... we praten hier nog steeds gewoon Nederlands ;-)
Hoe zouden jullie dit aanpakken. De index.php staat nu nog niet op de juiste plaats op de server. Dus ik wilde dit oplossen met een variabel,, zodat ik bij het presenteren van de website alleen de variabel hoef aan te passen.
Zie ook dat ik een verkeerd voorbeeld heb genomen.
Dit had gewoon een compleet adres moeten zijn.
Ik bedoel het eigenlijk meer in deze vorm:
//connection to db
include_once($path."includes/config.php");
waarbij $path dan zoiets zal worden: /home/*******/*********/*******/public_html/boom/
Code (php)
1
2
3
4
5
2
3
4
5
<?php
define('INCLUDES_DIR', '/home/*******/*********/*******/public_html/boom/includes/');
require_once INCLUDES_DIR . 'config.php';
include_once INCLUDES_DIR . 'index.php';
?>
define('INCLUDES_DIR', '/home/*******/*********/*******/public_html/boom/includes/');
require_once INCLUDES_DIR . 'config.php';
include_once INCLUDES_DIR . 'index.php';
?>
Let wel op: alles in en onder public_html is extern toegankelijk. Includes horen daarom buiten deze webroot (bijvoorbeeld in een directory naast /public_html/).
Enerzijds heb je te maken met interne paden/verwijzingen, die beschrijven waar jouw bestanden staan op je webserver. Deze gebruik je voor includes (maar wellicht beter is een require en dan weer wellicht beter is het invoegen van bestanden door middel van een autoloader, maar dat terzijde). Deze interne paden zijn voor intern gebruik. Alle verwijzingen naar bestanden die via PHP verlopen geschieden doorgaans via deze interne naamgeving.
Anderzijds heb je een of meer extern paden, die door (browsers van) bezoekers wordt gebruikt om data (HTML-pagina's, afbeeldingen, stylesheets) van jouw website op te vragen. Hiervoor gebruik je altijd een extern pad zodat dit in lijn is met de naamgeving waarmee bestanden worden opgevraagd en geserveerd.
Wat je zou kunnen doen is een absoluut basepath kunnen definiëren in je HTML document en vervolgens relatieve verwijzingen gebruiken, dit kan handig zijn voor afbeeldingen en CSS. Maar voor interne links kan het weer handiger zijn om volledige URLs te gebruiken. Hierbij is het vervolgens weer handig om een hulpfunctie te gebruiken om een URL op te bouwen. Dit stelt je namelijk in staat je website makkelijk te verhuizen of om je website op meerdere plaatsen te hosten (denk aan een ontwikkelomgeving en een productieomgeving) zonder dat dit je pagina-navigatie breekt (of dat je van je test- naar je productieomgeving navigeert en je maar niet snapt waarom de wijzigingen op je testomgeving maar niet zichtbaar worden... sounds familiar? :)).
Interne en externe verwijzingen hebben niets met elkaar te maken en zul je (om meerdere redenen, maar ook simpelweg omdat dit waarschijnlijk toch niet werkt) strikt gescheiden moeten houden. Het is dus niet zozeer onveilig maar meer onzinnig.
Bij beide varianten is het heel handig om deze niet volledig te hardcoden, maar (deels) configureerbaar te houden/te maken om bovengenoemde redenen.
Een interne linkfunctie zou bijvoorbeeld gebruik kunnen maken van de volgende parameters / configuratie-variabelen:
* dit deel zou uit configuratie moeten komen *
- het protocol, (http, https, iets anders)
- het domein (live domein of virtual host)
- het relatieve basispad naar je website, doorgaans is deze leeg omdat je website meestal in de root van je domein staat, maar het kan handig zijn dat dit instelbaar is (denk aan /test, /demo, /v2 of iets dergelijks)
* dit deel beschrijft welke pagina je eigenlijk aan wilt roepen *
- een (relatief) pad ter identificatie van de opgevraagde pagina (dit kan van alles zijn, vooral als je gebruik maakt van zoekmachine vriendelijke URLs)
- een lijst met querystring variabelen (key-value paren die opvraagbaar zijn via $_GET)
Gewijzigd op 15/12/2015 15:11:10 door Thomas van den Heuvel
Dank je wel voor je uitgebreide antwoord. Hier had ik zeker wat aan.