PHP en MySQLeen goed team

Basis script. index.php?actie=1

Basis script. index.php?actie=1

Het volgende artikel gaat over een basis script waarbij 1 script de gehele site kan aansturen.
De truc ligt in het feit dat er niet naar meerdere files verwezen wordt, maar naar één file ( index.php ) waar parameters aan worden meegegeven.

Eerst een globale directory structuur van een website.

  • website
    • inc
      • pagina_1.php
      • pagina_2.php
      • pagina_3.php
      • .....
    • js
      • naam_1.js
      • naam_2.js
      • .....
    • css
      • css.css
    • config
      • header.php
      • footer.php


Er zijn in dit voorbeeld 4 directorys in de website met alle hun eigen functie.

  • inc
    • alle pagina's gaan hierin
  • js
    • alle javascripts gaan hierin
  • css
    • alle css scripts gaan hierin
  • config
    • alle globale scripts gaan hierin

De reden van deze structuur is dat er op deze wijze geen vervuiling optreedt, en dat alles overzichtelijk verdeeld is in sub-directories.

Stel je hebt een site met 3 pagina's.
Te weten :

  1. begin   =>   pagina_1.php
  2. pagina 2   =>   pagina_2.php
  3. pagina 3   =>   pagina_3.php

Deze pagina's hebben alle dezelfde kop en voet tekst, te weten

Kop tekst   =>   header.php
Voet tekst   =>  footer.php
 
 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <meta name="description" content="Uw omschrijving komt hier" />
    <meta name="keywords" content="uw,sleutelwoorden,komen,hier" />
    <meta name="author" content="Uw naam" />
    <link type="text/css" rel="stylesheet" href="./css/css.css" media="screen,projection" />
    <title> van Wijhe Consultancy  - CMS </title>    
</head>
<body>
 
    header.php    

 


</body>
</html>
 
    footer.php    



Voor elke pagina wordt opnieuw door PHP een opbouw gemaakt door middel van de
   include ("./config/header.php");
vorm.

Deze plakt als het ware de gedeelten aan elkaar, zodat ze een logische geheel vormen.
 
 


<?php

include ("./config/header.php"); 

include (
"./inc/pagina_1.php"); 

include (
"./config/footer.php"); 
   
?>
 
    voorbeeld 1    



Bovenstaand voorbeeld zou dan de begin pagina opleveren.

Het werkende script ziet er als volgt uit:

 

<?php
// index.php?actie=xxxx script

include ("./config/header.php");

// begin pagina
if($_GET['actie'] ==  )
   {
   include (
"./inc/pagina_1.php");
   }
// tweede pagina
elseif($_GET['actie'] ==  )
   {
   include (
"./inc/pagina_2.php");
   }
// derde pagina
elseif($_GET['actie'] ==  )
   {
   include (
"./inc/pagina_3.php");
   }
// vangnet bij geen of verkeerde parameters wordt de beginpagina getoond
else
   {
   include (
"./inc/pagina_1.php");
   }
   
include (
"./config/footer.php");

?> 
 
    index.php    



Er wordt gelinkt naar de index file op de volgende manier.
index.php?actie=1

PHP kijkt dan welke parameter er meegegeven wordt en voert deze vervolgens uit.
Dat doet hij door naar de $_GET['actie'] ==   te kijken.

Deze _GET vorm vangt alle variabelen af welke niet door een formulier verstuurd worden.

Zo zijn er in dit geval meerdere parameters.

Voor de eerste pagina is dat : index.php?actie=1
Voor de tweede pagina is dat : index.php?actie=2
En voor de derde pagina is dat : index.php?actie=3

Als beveiliging (of als vangnet) is er een laatste optie aan toegevoegd.
Deze zorgt ervoor dat als er geen of geen goede parameter wordt meegegeven de begin pagina zowiezo wordt getoond.

De rol van het vraagteken.

Het vraagteken speelt een belangrijke rol.
Deze vertelt PHP dat de naam van het script stopt en dat PHP een variabele kan verwachten.
(NB.) Het ligt dus voor de hand geen vraagtekens in de namen van de scripten te gebruiken.

Neem index.php?actie=1 als voorbeeld.

  • De naam van de gevraagde file is index.php
  • De naam van de variabele is actie
  • De waarde 1 wordt hier aan toegekend

Meerdere variabelen toekennen?

Dat kan.
Je zult dan het & teken dienen te gebruiken.

Neem index.php?actie=1 als uitgangspunt.
Je wilt de variabele dag ook nog meegeven met de waarde 2.
De gehele URL wordt dan : index.php?actie=1&dag=2
Het script index.php zal dan naar 2 variabelen kijken en daarop reageren.

$actie     ==     1

En naar:

$dag     ==     2


Er zijn nog wel een paar spelregels.

  • Geen tekens in de naam van de file opnemen zoals     ?     &     <     >     '     "     /     \     ;     ,     =



Alle scripts zijn te vinden onder de naam actie.zip

Beveiliging

  • Om niet alle scripts zomaar op straat te hebben liggen, is het handig om een lege index.html file in alle directories te plaatsen.
    Een williekeurige buitenstaander kan dan niet zomaar de inhoud van die directorie lezen, daar de file index.html door de web server standaard getoond wordt als deze aanwezig is.
  • Gebruik als variabelen cijfers
    Deze kunnen beter beveilgd worden dan letters.
    Letters kunnen immers code uitvoeren.



Tot ziens,

Ubel Jan van Wijhe
van Wijhe Consultancy