# Gepost op 05-08-2009 00:31
In deze tutorial ga ik uitleggen hoe je gemakkelijk een systeem kan maken zodat je steeds slechts een keer een link hoeft aan te passen als je bijvoorbeeld een pagina naam wilt aanpassen.
Indeling:
1) Basis uitleg van de include functie
2) Maar hoe koppel ik dit nu aan mijn menu?
3) Hoe maak ik het enigzins veilig
4) De include pagina's beveiligen
5) De boel SEO vriendelijk maken.
1) Basis uitleg van de include functie
De include functie is simpel. Hiermee koppel je bij wijze van spreken twee losse pagina's in een.
Hier een klein voorbeeld:
Wanneer je "Parent.php" opent, is de output "Ik ben een pagina.Ik ben een kind van Parent.php". Open je Child.php handmatig, dan zie je uiteraard alleen "Ik ben een kind van Parent.php". Hoe je kan controleren of Child.php wel ECHT een child is van Parent.php, zal ik later uitleggen.
2) Maar hoe koppel ik dit nu aan mijn menu?
Als eerste, wat is je menu? Hoe komen je links eruit te zien? Het menu maak ik nu met simpele links. Maak eerst maar een pagina aan genaamd "index.php". De code komt er nu zo uit te zien:
Zoals je ziet staat er in de tweede link "?pagina=test". Dit is een 'query'. De '?' geeft het begin aan van de query string, 'pagina' is de key, 'test' is de value. Het '=' teken spreekt voor zich. Om meerdere querys te gebruiken moet je de querys scheiden met een '&' teken. '?pagina=test&aap=noot'. Let op! In de HTML moet een '&'-teken als '&' worden geschreven.
Nu gaan we de php code maken. Om de querys op de vragen maken wij gebruik van superglobals. $_GET en $_POST zijn hier voorbeelden van. $_GET gaan wij nu gebruiken. Een simpel voorbeeld:
In dit voorbeeld wordt wanneer je op de link 'Test' klikt, de tekst 'test' weergeven. Maak nu maar eens een 'test.php' aan, en zet er iets leuks in, bijvoorbeeld wat leuke foto's van je vriendin
. We gaan nu 'index.php' aanpassen:
Simpel toch? Ja, maar we zijn er nog niet. Wat nu als men een link kiest van '?pagina=index.php'. Dan krijg je een lus, wat we niet willen. We moeten het dus veiliger maken. Dit doen we in de volgende stap.
3) Hoe maak ik het enigzins veilig
Om te beginnen willen we het zorgen dat men niet alle pagina's kan includen via de url. Daarnaast willen we niet dat men bestanden uit andere mappen kan includen.
In deze stap ga ik ook meteen uitleggen hoe je kan controleren of een pagina bestaat.
Laten we maar beginnen. Maak een map aan genaamd 'inc' (mag ook een andere naam zijn, maar daarmee moet je dan rekening houden in het script). Verplaats je 'test.php' maar naar die map.
We gaan nu gebruik maken van twee functies. basename() gaan we gebruiken om de pagina naam op te vragen. basename('../../pagina.php'); wordt gewoon 'pagina.php'. En we gaan controleren met 'file_exists('pagina.php')' of het bestand wel bestaat. Een simpele code:
We gaan nu:
- de controle bovenaan doen (ivm de laatste stap)
- zorgen dat wanneer er niks is opgegeven, dat de homepagina weergeven.
- zorgen dat wanneer de pagina niet bestaat, dat een mooie 404 pagina wordt weergeven.
Maak nu twee pagina's aan. 'error404.php', en 'home.php'. Zet er wat leuks in, maakt niet zo uit wat. Zet deze ook in de map 'inc'.
De code
Nu heb je als het goed is, een goed werkend systeem.
4) De include pagina's beveiligen
Bij grotere systemen kan een include pagina soms niet zonder parent pagina. Bijvoorbeeld vanwege een database connectie. Zo controlleer je dat:
5) De boel SEO vriendelijk maken.
We gaan nu;
- Zorgen dat je geen ?pagina=iets ziet, maar /iets.html.
- Zorgen voor een gepaste titel die per pagina veranderd wordt
- De links aanpassen.
Oke. Eerst maar eens de titel. Ze helemaal onderaan de php code de volgende code:
De titel wordt dan:
Let op! Voor mooie titels, is het handig om passende pagina namen te maken!
Nu passen we de urls aan:
En om het werkend te maken. Maak een bestand genaam '.htaccess'. Deze komt in dezelfde map als 'index.php'. Hierin komt het volgende:
Pagina's mogen nu alle gewone letters (a tot z en A tot Z) , getallen, en '-', '_'- tekens bevatten.
Een opmerking over htaccess! Waarschijnlijk kloppen je stylesheets, images etc niet meer. Gebruik daarvoor een volledige link zoals "http://www.site.nl/css/style.css". Hoewel, ik heb het nu even getest bij mij, en het lijkt goed te werken.
Nog even de totale pagina voor de copy/pasters:
Tot slot
Ik hoop dat het duidelijk is voor de beginners. Anders kunnen er altijd nog vragen worden gesteld.
Je kan een voorbeeld zien op:
http://vidiqatch.org/koenux/tutorial/menu-met-pagina-include/
Indeling:
1) Basis uitleg van de include functie
2) Maar hoe koppel ik dit nu aan mijn menu?
3) Hoe maak ik het enigzins veilig
4) De include pagina's beveiligen
5) De boel SEO vriendelijk maken.
1) Basis uitleg van de include functie
De include functie is simpel. Hiermee koppel je bij wijze van spreken twee losse pagina's in een.
Hier een klein voorbeeld:
- <?php
- // Parent.php
- echo "Ik ben een pagina.";
- include("Child.php");
- ?>
- <?php
- // Child.php
- echo "Ik ben een kind van Parent.php";
- ?>
Wanneer je "Parent.php" opent, is de output "Ik ben een pagina.Ik ben een kind van Parent.php". Open je Child.php handmatig, dan zie je uiteraard alleen "Ik ben een kind van Parent.php". Hoe je kan controleren of Child.php wel ECHT een child is van Parent.php, zal ik later uitleggen.
2) Maar hoe koppel ik dit nu aan mijn menu?
Als eerste, wat is je menu? Hoe komen je links eruit te zien? Het menu maak ik nu met simpele links. Maak eerst maar een pagina aan genaamd "index.php". De code komt er nu zo uit te zien:
Zoals je ziet staat er in de tweede link "?pagina=test". Dit is een 'query'. De '?' geeft het begin aan van de query string, 'pagina' is de key, 'test' is de value. Het '=' teken spreekt voor zich. Om meerdere querys te gebruiken moet je de querys scheiden met een '&' teken. '?pagina=test&aap=noot'. Let op! In de HTML moet een '&'-teken als '&' worden geschreven.
Nu gaan we de php code maken. Om de querys op de vragen maken wij gebruik van superglobals. $_GET en $_POST zijn hier voorbeelden van. $_GET gaan wij nu gebruiken. Een simpel voorbeeld:
- <?php
- echo $_GET['pagina'];
- ?>
In dit voorbeeld wordt wanneer je op de link 'Test' klikt, de tekst 'test' weergeven. Maak nu maar eens een 'test.php' aan, en zet er iets leuks in, bijvoorbeeld wat leuke foto's van je vriendin
. We gaan nu 'index.php' aanpassen:- <html>
- <head>
- <title>Tutorial - Een include systeem voor menu's</title>
- </head>
- <body>
- <a href="index.php">Home</a> -
- <a href="index.php?pagina=test">Test</a>
- <div id="content">
- <?php
- include($_GET['pagina'].".php");
- ?>
- </div>
- </body>
- </html>
Simpel toch? Ja, maar we zijn er nog niet. Wat nu als men een link kiest van '?pagina=index.php'. Dan krijg je een lus, wat we niet willen. We moeten het dus veiliger maken. Dit doen we in de volgende stap.
3) Hoe maak ik het enigzins veilig
Om te beginnen willen we het zorgen dat men niet alle pagina's kan includen via de url. Daarnaast willen we niet dat men bestanden uit andere mappen kan includen.
In deze stap ga ik ook meteen uitleggen hoe je kan controleren of een pagina bestaat.
Laten we maar beginnen. Maak een map aan genaamd 'inc' (mag ook een andere naam zijn, maar daarmee moet je dan rekening houden in het script). Verplaats je 'test.php' maar naar die map.
We gaan nu gebruik maken van twee functies. basename() gaan we gebruiken om de pagina naam op te vragen. basename('../../pagina.php'); wordt gewoon 'pagina.php'. En we gaan controleren met 'file_exists('pagina.php')' of het bestand wel bestaat. Een simpele code:
- <?php
- $map = "inc/"; // De map waar de includes inkomen, (moet een slash achter).
- include($pagina);
- } else {
- echo "Bestand bestaat niet.";
- }
- ?>
We gaan nu:
- de controle bovenaan doen (ivm de laatste stap)
- zorgen dat wanneer er niks is opgegeven, dat de homepagina weergeven.
- zorgen dat wanneer de pagina niet bestaat, dat een mooie 404 pagina wordt weergeven.
Maak nu twee pagina's aan. 'error404.php', en 'home.php'. Zet er wat leuks in, maakt niet zo uit wat. Zet deze ook in de map 'inc'.
De code
- <?php
- // Index.php
- $map = "inc/"; // De map waar de includes inkomen, (moet een slash achter).
- $pagina404 = $map."error404.php"; // de 404 pagina
- $paginahome = $map."home.php"; // De home pagina
- // staat ?pagina=iets in de url?
- $pagina = $pagina404;
- }
- } else {
- $pagina = $paginahome;
- }
- ?>
- <html>
- <head>
- <title>Tutorial - Een include systeem voor menu's</title>
- </head>
- <body>
- <a href="index.php">Home</a> -
- <a href="index.php?pagina=test">Test</a>
- <div id="content">
- <?php
- include($pagina);
- ?>
- </div>
- </body>
- </html>
Nu heb je als het goed is, een goed werkend systeem.
4) De include pagina's beveiligen
Bij grotere systemen kan een include pagina soms niet zonder parent pagina. Bijvoorbeeld vanwege een database connectie. Zo controlleer je dat:
- <?php
- // test.php
- header("Location: ../test.html"); // Als je een header redirect wilt gebruiken, verander dit eventueel. nu verwijst het naar de zelfde pagina,
- // maar dan via die is toegestaan
- }
- ?>
- Hier de rest van je pagina.
5) De boel SEO vriendelijk maken.
We gaan nu;
- Zorgen dat je geen ?pagina=iets ziet, maar /iets.html.
- Zorgen voor een gepaste titel die per pagina veranderd wordt
- De links aanpassen.
Oke. Eerst maar eens de titel. Ze helemaal onderaan de php code de volgende code:
- // ucfirst is een functie om van de eerste letter een hoofdletter te maken, de rest klein letters.
De titel wordt dan:
- <title><?php echo $title; ?></title>
Let op! Voor mooie titels, is het handig om passende pagina namen te maken!
Nu passen we de urls aan:
En om het werkend te maken. Maak een bestand genaam '.htaccess'. Deze komt in dezelfde map als 'index.php'. Hierin komt het volgende:
Plain | Plain new window | code:
- RewriteEngine on
- RewriteRule ^([a-zA-Z0-9\-_]+)\.html$ index.php?pagina=$1 [L]
Pagina's mogen nu alle gewone letters (a tot z en A tot Z) , getallen, en '-', '_'- tekens bevatten.
Een opmerking over htaccess! Waarschijnlijk kloppen je stylesheets, images etc niet meer. Gebruik daarvoor een volledige link zoals "http://www.site.nl/css/style.css". Hoewel, ik heb het nu even getest bij mij, en het lijkt goed te werken.
Nog even de totale pagina voor de copy/pasters:
- <?php
- // Index.php
- $map = "inc/"; // De map waar de includes inkomen, (moet een slash achter).
- $pagina404 = $map."error404.php"; // de 404 pagina
- $paginahome = $map."home.php"; // De home pagina
- // staat ?pagina=iets in de url?
- $pagina = $pagina404;
- }
- } else {
- $pagina = $paginahome;
- }
- // ucfirst is een functie om van de eerste letter een hoofdletter te maken, de rest klein letters.
- ?>
- <html>
- <head>
- <title><?php echo $title; ?></title>
- </head>
- <body>
- <a title="Home pagina" href="home.html">Home</a> -
- <a title="Test pagina" href="test.html">Test</a>
- <div id="content">
- <?php
- include($pagina);
- ?>
- </div>
- </body>
- </html>
Tot slot
Ik hoop dat het duidelijk is voor de beginners. Anders kunnen er altijd nog vragen worden gesteld.
Je kan een voorbeeld zien op:
http://vidiqatch.org/koenux/tutorial/menu-met-pagina-include/
Lees de forum regels