ik wil graag een veilige navigatie maken zoals:
veilige pagina?id=blabla

(bestaand script hier)
<?
$pagina = $_GET['pagina'];
$paginas = array("downloads","plaatjes","nogeenpagina");

if(in_array($pagina,$paginas) && file_exists($pagina .".php"))
{
include($pagina .".php");
}
else
{
include("default.php");
}
?>


---
Maar nu wil ik het iets anders aanpakken , ik wil namelijk dat alle waarden (dus bijv aap.php) een nummer krijgen .. dus dat het:
veiligepagina.php?id=1 word etc .. zodat ik dan weer kan controleren of het wel numeric is..
kan iemand mij mischien een voorbeeld geven hiervan?

vraag2: werkt dit trouwens dan ook als ik dus op nummeric controleer , en het script zelf dat aangeroepen word 'ook' paginas gebruikt..
dus zoiets als: veiligepagina.php?id=1&pagina=5 etc.. (of gaat hij dan zeuren dat het 'pagina' niet nummeric is?)
vraag 1:
<?php
switch( $_GET['id'] )
{
case 1:
include blabla;
break;

default:
//De waarde van $_GET['id'] komt niet voor in de cases

}
?>

vraag2:
Snap ik niet.
1: Eigenlijk hetzelfde wat je nu hebt ongeveer? Waarom wil je een getal, de controle daarop is namelijk niet veel veiliger dan wat je nu hebt met een array?

<?php
$page = htmlentities($_GET['page']);

if(is_numeric($page)) {
switch($page) {
case 1:
$pagina = 'downloads';
break;
case 2:
$pagina = 'plaatjes';
break;
case 3:
$pagina = 'nogeenpagina';
break;
default:
$pagina = 'default';
}
include($pagina . '.php');
} else {
print 'U heeft een ongeldige pagina opgeroepen';
}
?>

2: Dat zou gewoon moeten werken, omdat id een andere variabele is dan pagina.
Ok bedankt voor de replys ! , het is me duidelijk!
Als je die pagina's toch in een array zet, kun je dan niet iets als:

<?
$pages = array("./welkom.php", "./gastenboek.php", "./contact.php");
$page = stripslashes($_GET["page"]);

if(is_numeric($page) && ($page < sizeof($pages)))
{
include($pages[$page]);
}
else
{
print("Pagina niet beschikbaar");
}

?>
Waarom wil je een getal, de controle daarop is namelijk niet veel veiliger dan wat je nu hebt met een array?
---

Mijn gedachte:

Ik dacht dat als de waarde numeric moet zijn .. het onmogelijk is om er script op uitevoeren ( of ander gespuis)
Donster schreef op 16.02.2006 10:47

Mijn gedachte:

Ik dacht dat als de waarde numeric moet zijn .. het onmogelijk is om er script op uitevoeren ( of ander gespuis)

Maar je controleerde eerst of een waarde voorkwam in een array. Dat is, evenals een switch-statement, ook een goede manier om dat te voorkomen.

Het maakt volgens mij niet zo veel uit, maar het debuggen met cijfertjes in de adresbalk lijkt mij lastiger dan gewoon strings.

Reageren