Het gebruik van "?_page="

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ben Pino

Ben Pino

02/10/2012 08:34:36
Quote Anchor link
Hoi allemaal,


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.
 
PHP hulp

PHP hulp

24/11/2024 00:00:42
 
Chris -

Chris -

02/10/2012 09:00:45
Quote Anchor link
?_page= is letterlijk op te roepen met PHP. Dat gaat via $_GET['_page']. Houdt er echter wel rekening mee, dat wanneer je deze variabele direct gebruik in een include, je website ongelooflijk kwetsbaar wordt.

Je kunt dus beter gebruik maken van een switch om de variabele te valideren. Bijvoorbeeld zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.';
?>
 
Ben Pino

Ben Pino

02/10/2012 09:23:42
Quote Anchor link
Hoi Chris,

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
 
Chris -

Chris -

02/10/2012 15:27:42
Quote Anchor link
Graag gedaan! :-)
 
Remco schrubben

remco schrubben

02/10/2012 16:09:39
Quote Anchor link
Kijk ook eens HIER

switch kan ook, maar dan zal je steeds bij uitbreiding je file moeten aanpassen.
 
Ben Pino

Ben Pino

02/10/2012 20:58:46
Quote Anchor link
Hoi Remco,

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.
 
Remco schrubben

remco schrubben

02/10/2012 21:22:21
Quote Anchor link
Ben

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.
 
- Raoul -

- Raoul -

02/10/2012 21:28:54
Quote Anchor link
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.
 
Chris -

Chris -

02/10/2012 22:27:17
Quote Anchor link
Remco schrubben op 02/10/2012 16:09:39:
Kijk ook eens HIER

switch kan ook, maar dan zal je steeds bij uitbreiding je file moeten aanpassen.


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 ^_^
 
Php knipper

php knipper

02/10/2012 22:40:44
Quote Anchor link
gooi de include padden in een array
[home] => "../main/home.php",

zorg er zeker voor dat ze dezelfde pagina niet kunnen include anders krijg je een eeuwige lust (ervaring )
 
Ozzie PHP

Ozzie PHP

02/10/2012 22:51:18
Quote Anchor link
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 ;)
 
Php knipper

php knipper

02/10/2012 23:13:18
Quote Anchor link
oeps foutje
 
Reshad F

Reshad F

03/10/2012 00:22:46
Quote Anchor link
ik denk dat dit veel simpeler is dan een switch en overigens hoef je ook niet steeds je switch te wijzigen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
        // load the content
        $page = isset($_GET['page']) ? $_GET['page'] : "main.php";
        if( file_exists($page)) include($page);
        else include("404.html");
        
    ?>
 
Remco schrubben

remco schrubben

03/10/2012 00:34:24
Quote Anchor link
Chris - Natuurlijk is het op verschillende manieren te doen. Wat ik bedoelde met file niet aanpassen. Ik doelde hier op de switch. Als je namelijk een pagina bij maakt, zal je ook je switch moeten aanpassen lijkt mij. Met het voorbeeld die ik geeft hoef je alleen je nav te doen en een file in pages zetten. Dan zal die pagina gelijk al oproepbaar zijn via browser.

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.
 
Chris -

Chris -

03/10/2012 01:02:28
Quote Anchor link
Reshad F op 03/10/2012 00:22:46:
ik denk dat dit veel simpeler is dan een switch en overigens hoef je ook niet steeds je switch te wijzigen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
        // load the content
        $page = isset($_GET['page']) ? $_GET['page'] : "main.php";
        if( file_exists($page)) include($page);
        else include("404.html");
        
    ?>

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.