aan je filenaam te zien zijn het libraries (sub php bestanden). Ik zou die altijd in een subdirectory opslaan. In die directory zou ik dan een .htaccess bestand aanmaken met daar in de tekst 'Deny from all' . Dan zijn de bestanden 'onzichtbaar' voor de buitenwereld. Maar wat ook kan is dat je in die directory een index.php maakt met daarin de volgende code:
Het nadeel is dan wel dat de bestanden nog steeds rechtstreeks benaderd kunnen worden.
Wellicht kan het .htaccess bestand zodanig beschreven worden dat enkel de index.php geopend kan worden.
Wat ook mogelijk is (en wat je bijvoorbeeld bij CodeIgniter ziet) is in de index.php van je website een constante definieren. Daar hangt echter een grote voorwaarde aan vast, alle bestanden die je 'include' zullen door deze index.php moeten worden geincluded, of door bestanden die al zijn geincluded door index.php:
index.php
<?php
define('DSA', 'blabla');
?>
Vervolgens plaats je in alle mappen een .htaccess
.htaccess (in alle mappen):
Deny from All
En kijk je in elk bestand dat aangeroepen wordt door de 'main' index.php of de constante gedefinieerd is.
Overige (.php) bestanden:
<?php
if (!defined('DSA'))
exit('No direct script access allowed');
?>
Of:
<?php
if (!defined('DSA'))
header('Location: www.mijndomein.nl/index.php');
?>
Wat hierbij wel erg belangrijk is, is dat er geen enkele output naar de browser gestuurd kan worden voordat alle bestanden zijn 'geincluded'. Anders krijg je de bekende foutmelding: Headers already sent...
Een extra toevoeging in de mappen zou een 403-Forbidden pagina zijn die je opslaat als index.html
Peter, ik noem dat een -niet php oplossing-. Het maakt de redirect browser afhankelijk en is tevens (veel) trager dan een PHP redirect. Ik gebruik dat ding echt nooit.
Is wel het makkelijkst om overzicht te houden en ook het meest logische...
Ik weet niet of het daadwerkelijk uitmaakt, maar voor mijn gevoel moet ik eerst alles op de webserver uitvoeren (dus PHP code) en vervolgens pas gegevens naar de clien sturen (dus HTML).
Stel je wilt ook gegevens controleren op de client (JavaScript of jQuery) dan komt dit voor de PHP. Op die manier beperk je naar mijn idee het 'onnodige verkeer' tussen server en client. Of dit ook daadwerkelijk zo is, weet ik echt niet. Het is een manier van werken geworden omdat het 'logisch' is.