$_SERVER[ ]

php.net
PHP kent een array van variabelen die door de server van een waarde worden voorzien: $_SERVER[ ]. Dit is een superglobaal array dat een hele reeks keys kent. Wellicht de bekendste is 'PHP_SELF' dat veel gebruikt wordt bij scripts met formulieren om de in hetzelfde script aanwezige formhandler aan te roepen. Maar er zijn er meer. Voor een compleet overzicht zie bovenstaande link. Hier behandelen we enkele veel voorkomende. De gegenereerde resultaten zijn in rood weergegeven.

  • $_SERVER['PHP_SELF'] geeft het adres van het op dit moment uitgevoerde script t.o.v. de document root: /index.php
  • Wie het totale pad wil weten kan zich beroepen op de magische constante __FILE__ : /home/public/sites/www.wiki.wiltsite.nl/include/server.inc.php
  • $_SERVER['REQUEST_URI'] toont de URI waarmee op deze pagina is gekomen: /index.php?pagina=Server. Deze variabele is bijzonder handig in verwijzingen naar het script zelf als er in het pad daarheen een GET-string voorkomt.
  • Een interessante functie in dit verband is dirname(). Deze retourneert van een zeker file het pad naar de map (directory) die dat file bevat. Bijvoorbeeld dirname($_SERVER['REQUEST_URI']: /.
  • $_SERVER['SERVER_NAME'] geeft de naam van de serverhost waar het op dit moment uitgevoerde script op draait: www.wiki.wiltsite.nl
  • $_SERVER['REQUEST_METHOD'] geeft de requestmethode GET, POST, HEAD of PUT: GET
  • $_SERVER['DOCUMENT_ROOT'] geeft de document root van het op dit moment uitgevoerde script: /home/public/sites/www.wiki.wiltsite.nl
  • $_SERVER['PATH_INFO'] geeft het deel tussen de locatie van het script en de query-string. Van belang voor seo-riendelijke url's zoals die in frameworks worden toegepast. Sinds PHP 5.4 krijg je een foutmelding als die niet bestaat: Foutmelding omdat er geen path_info bestaat
  • $_SERVER['QUERY_STRING'] geeft enkel de eventuele query-string: pagina=Server
  • $_SERVER['HTTP_REFERER'] Niet al te betrouwbaar, wel interessant. Het adres van waaruit deze pagina is aangeroepen. Deze informatie wordt door de browser verstuurd:
  • $_SERVER['HTTP_USER_AGENT'] geeft de user-agentstring die de browser meestuurt. Als je deze waarde opneemt als argument in de get_browser() functie dan krijg je een heel array met eigenschappen van die betreffende browser. Op die manier kan je bepalen van welke eigenschappen je al of geen gebruik kan maken: CCBot/2.0 (https://commoncrawl.org/faq/)
  • $_SERVER['SCRIPT_FILENAME'] geeft de naam van het op dit moment uitgevoerde script: /home/public/sites/www.wiki.wiltsite.nl/index.php

Voor een verhandeling over de subtiele verschillen zie hier

.

In dit verband wil ik nog even aanstippen wat het verschil is tussen een URI en een URL. URI staat voor Universal Resource Identifier en URL staat voor Universal Resource Locator. Vaak worden deze termen door elkaar gehaald wat niet geheel correct is. Een URI bevat ook het protocol (http://, ftp://, mailto:) een url is alleen het adres wat er achter staat. De term URL is depricated. Iedere URI is bedoeld om zekere bronnen op het internet te benaderen en bevatten ook de bijbehorende accessmethode

Wat is nu precies een "User-agent"? Dat staat hier en hier uitgelegd. Het komt er op neer dat het programma dat een verzoek richt aan een server een identificatiestring meestuurt. Aan de hand hiervan kan de server dan eventueel een specifiek voor dat programma gegenereerde pagina versturen.

Van de php site komt de volgende complete lijst:

NB al die namen in de linker kolom zijn dus key-values van het $_SERVER array.

PHP_SELF : /index.php
GATEWAY_INTERFACE : CGI/1.1
SERVER_ADDR : 192.168.0.82
SERVER_NAME : www.wiki.wiltsite.nl
SERVER_SOFTWARE : Apache
SERVER_PROTOCOL : HTTP/1.1
REQUEST_METHOD : GET
REQUEST_TIME : 1540007317
REQUEST_TIME_FLOAT : 1540007317.396
QUERY_STRING : pagina=Server
DOCUMENT_ROOT : /home/public/sites/www.wiki.wiltsite.nl
HTTP_ACCEPT : text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_CHARSET :
HTTP_ACCEPT_ENCODING : gzip
HTTP_ACCEPT_LANGUAGE :
HTTP_CONNECTION : close
HTTP_HOST : www.wiki.wiltsite.nl
HTTP_REFERER :
HTTP_USER_AGENT : CCBot/2.0 (https://commoncrawl.org/faq/)
HTTPS :
REMOTE_ADDR : 54.224.118.247
REMOTE_HOST :
REMOTE_PORT : 26914
REMOTE_USER :
REDIRECT_REMOTE_USER :
SCRIPT_FILENAME : /home/public/sites/www.wiki.wiltsite.nl/index.php
SERVER_ADMIN : webmaster@localhost
SERVER_PORT : 80
SERVER_SIGNATURE :
PATH_TRANSLATED :
SCRIPT_NAME : /index.php
REQUEST_URI : /index.php?pagina=Server
PHP_AUTH_DIGEST :
PHP_AUTH_USER :
PHP_AUTH_PW :
AUTH_TYPE :
PATH_INFO :
ORIG_PATH_INFO :