.htaccess

    ICTscripters maakt gebruik van cookies. Door het gebruiken en browsen naar onze site gaat je automatisch akkoord met het gebruik van cookies. Klik hier voor meer informatie

    • Ferhat.Remory wrote:

      Of kijk is naar wat ik vroeger had; github.com/GreyDevbe/modrewrite
      Waarom geen autoloader? :(
      En een blacklist voor URL-onderdelen? :/
      Een querystring parameter "route" die je meegeeft in de URL? Is ook niet nodig, lees gewoon $_SERVER['REQUEST_URI'] uit.
      Wellicht is dit een beetje gedateerd allemaal?

      AarClay wrote:

      Zie ook de tutorial.
      Sterker nog, ik heb hier een hele blog reeks over. Die tutorial is slechts een snippet.

      Trouwens, als je wilt dat die PHP-bestanden niet rechtstreeks benaderbaar zijn, wat ook kan gebeuren doordat namen van URL's en directories en namen van bestanden kunnen "botsen" (ook dit staat in de blogs uitgelegd) dat zet je je application directory toch gewoon buiten je webdirectory?
    • Oftewel, als je dit een beetje gestructureerd wilt aanpakken:

      1. zorg je dat je applicatie een single point of entry heeft, dit bereik je o.a. met een .htaccess bestand die alles naar de voordeur van je applicatie doorstuurt
      2. maak hierbij gebruik van een autoloader en organiseer je functionaliteit in klasses, bijvoorbeeld als volgt
      3. vervolgens moet je alles aan elkaar knopen door middel van routing in je applicatie

      Hoe uitgebreid dit laatste moet zijn hangt sterk af van de mate van vrijheid die je wilt hebben in de naamgeving van je URLs.

      Je zou het met een groot switch-statement kunnen doen zoals @Ferhat.Remory eerder aanhaalde als je het aan de PHP-kant wild hard coden, wat nog steeds de voorkeur heeft boven lopen prutten in je .htaccess bestand waarschijnlijk, of je bouwt dit zelf verder uit, ofwel in code, ofwel deels in een database in een soort van boomstructuur.

      Het voordeel van deze hele voorgaande opzet (.htaccess die alles naar index.php stuurt) is dat deze je voorbereidt op het verder afhandelen van een page-request in PHP zelf. In PHP kun je dit vervolgens helemaal programmeren zoals jij wilt. Dat is het hele doel van deze aanpak.

      Je zou ook bijvoorbeeld de hele URL kunnen beschouwen en kijken of hier (voor deze URL-omgezet-in-een-klassenaam) een router(-klasse) voor bestaat, die de URL verder ontleedt en door kan mappen naar een klasse die de paginacontent verder genereert. Bestaat de router niet, eet je een stukje van de URL op en herhaal je dit proces. Hiermee heb je dan ook meteen het probleem opgelost wat bij dit soort URLs komt kijken, namelijk welk deel van de URL is "vast", en welk deel van de URL zijn in feite parameters voor het "vaste" deel.

      Op het moment dat je geen autoloader gebruikt en/of een constructie met file_exists() hanteert dan heb je mogelijk ergens een afslag gemist waarbij je efficiënt gebruik kunt maken van een consistente naamgeving voor klassen. Je kunt namelijk een autoloader combineren met class_exists() - volgens mij was dit nog steeds / vele malen efficiënter dan file_exists(). Als je aangewezen bent op file_exists() dan wil dit in ieder geval / mogelijk zeggen dat er geen lijn zit in de naamgeving van je bestanden...

      Post werd 3x aangepast, het laatst door FangorN ().