Gebruik van compleet adres

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

J C

J C

15/12/2015 02:49:52
Quote Anchor link
Is het onveilig om een complete path te gebruiken in je script?

Zoiets als dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
 
PHP hulp

PHP hulp

21/11/2024 16:51:45
 
- Ariën  -
Beheerder

- Ariën -

15/12/2015 07:26:57
Quote Anchor link
It's unsafe and it does't working.

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 -
 
Ozzie PHP

Ozzie PHP

15/12/2015 13:32:27
Quote Anchor link
And besides that ... we praten hier nog steeds gewoon Nederlands ;-)
 
J C

J C

15/12/2015 13:54:32
Quote Anchor link
Haha sorry, was zo aan het zoeken op internet dat ik in het engels ben blijven hangen.

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/
 
Ward van der Put
Moderator

Ward van der Put

15/12/2015 14:05:11
Quote Anchor link
Ja, dat kan, al is een (configuratie)constante dan meer op zijn plaats dan een variabele:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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';
?>

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/).
 
Thomas van den Heuvel

Thomas van den Heuvel

15/12/2015 15:08:22
Quote Anchor link
^ Zoiets als Ward zegt, maar ik denk toch (ook) dat je (de topicstarter) hier twee dingen door elkaar haalt.

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
 
J C

J C

21/12/2015 00:33:54
Quote Anchor link
Dank je wel voor je uitgebreide antwoord. Hier had ik zeker wat aan.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.