Het gebruik van "?_page="
Ik ben bezig met een school eindopdracht.En mij werd aangeraden om een index pagina te maken en gebruik te maken van "?_page=" in de adressbalk (vb http://localhost/index.php?_page=gastenboek)
"Dan hoef je alleen nog maar te include-en" zei de leraar.
Het gaat er dus om dat alle paginas nagenoeg het zelfde eruit zien,alleen het content veranderd.
Ik heb lopen googlen op de "?_page=" maar daar komt niks zinnigs uit.
Ik hoopte dat ik dan ook meer info kon vinden hoe je moet includen.
Kan iemand mij uitleggen of doorsturen naar meer info hoe deze 2 gegevens dan samen moeten werken?
Een klein voorbeeld zou ik heel fijn vinden.
alvast bedankt.
Je kunt dus beter gebruik maken van een switch om de variabele te valideren. Bijvoorbeeld zo:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
echo 'Dit staat altijd bovenaan, je kunt hier HTML neerzetten voor je header.<br /><br />';
// Valideren of _page wordt gebruikt, zo niet standaard op "home"
if(empty($_GET['_page'])) {
$_GET['_page'] = 'home';
}
switch($_GET['_page']) {
case 'home':
// Home is bekend, dus die kunnen we includen
include('pages/home.php');
break;
// Alle andere pagina's zijn niet geldig
default:
include('pages/notfound.php');
break;
}
echo 'Dit wordt helemaal onderaan geplaatst.';
?>
echo 'Dit staat altijd bovenaan, je kunt hier HTML neerzetten voor je header.<br /><br />';
// Valideren of _page wordt gebruikt, zo niet standaard op "home"
if(empty($_GET['_page'])) {
$_GET['_page'] = 'home';
}
switch($_GET['_page']) {
case 'home':
// Home is bekend, dus die kunnen we includen
include('pages/home.php');
break;
// Alle andere pagina's zijn niet geldig
default:
include('pages/notfound.php');
break;
}
echo 'Dit wordt helemaal onderaan geplaatst.';
?>
Bedank voor je (snelle) reactie,ik ga dit proberen toe te passen.
Chris,effe lekker gevogeld en het werkt perfect,nogmals bedankt.
Gewijzigd op 02/10/2012 11:19:41 door Ben Pino
Graag gedaan! :-)
Interesant stukje code.Echter nog een slagje te ingewikkeld voor me.
Weet niet zeker of ik het 100% begrepen heb.
Maar zeker wel bedankt voor je in breng,wordt gewaardeerd.
Geen dank hoor, we zijn op het forum om elkaar te helpen.
Maar laat eens horen wat je niet snapt er aan? Wie weet kunnen we je helpen.
Alles zou ik ook niet kunnen uitleggen maar zal mijn best doen.
Tevens kijk ook de vragen en mijn reactie's in de gegeven topic.
Het grote voordeel van het stukje is het volgende.
Als je het stukje code zet in je index.php waar je content wilt tonen.
Dan zal de standaard pagina home.php zijn. Roep je nu index.php?p=contact aan. Dan zal contact.php geladen worden. Dit natuurlijk voor alle pagina's die je in map pages zet.
Tevens zit er een error functie in als de pagina niet gevonden kan worden of niet bestaat. Deze map heet error. in die map zou je dus een 404.php moeten maken.
Je hoeft niet persée switch() gebruiken. De beste manier is in mijn ogen om je folder met pages in een array te zetten via scandir() en vervolgens met in_array() kijken of _page in die array met files zit.
Remco schrubben op 02/10/2012 16:09:39:
In die van jou ook (allowed pages). Mijn voorbeeld kan exact hetzelfde doen, door meerdere cases te gebruiken en vervolgens de $_GET var te gebruiken..
Maar zoals je zegt, het kan op veel verschillende manieren. Je zou het ook nog in een else/if statement kunnen doen, zelfs geautomatiseerd met behulp van validators die ervoor zorgen dat je geen foutieve bestanden kan opnoemen. Gebruik ik vaak genoeg, op die manier hoef ik het script nooit meer aan te passen ^_^
[home] => "../main/home.php",
zorg er zeker voor dat ze dezelfde pagina niet kunnen include anders krijg je een eeuwige lust (ervaring )
Php knipper op 02/10/2012 22:40:44:
...anders krijg je een eeuwige lust (ervaring )
Je bedoelt een lus, maar je zal met je gedachten wel ergens anders zitten ;)
oeps foutje
Reshad - Het is een simpel en klein stukje code. Maar ik vind hem totaal niet echt veilig, altans zo kijk ik op dit stukje code.
Reshad F op 03/10/2012 00:22:46:
Raad deze ook niet aan. Die switch en die van Ben zijn vele malen veiliger. Met deze kun je LFI uitvoeren. Niet aan te raden, tenzij je graag wilt dat ik je uiteindelijk kom helpen omdat je een gehackte website hebt ;p