switch methode beter dan...
ik heb laatst mijn website omgezet van de switch methode die zo genoteerd was:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
switch (strtolower($_GET['pagina'])) {
case "pagina1":
$pagina="pagina1.php";
break;
default:
$pagina="index.php";
break;
}
include ($pagina);
case "pagina1":
$pagina="pagina1.php";
break;
default:
$pagina="index.php";
break;
}
include ($pagina);
Naar de volgende methode, omdat mij was aanbevolen dat deze methode beter en gemakkelijker werkte.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
$toegestaan = array(
'pagina';
if(isset($_GET['pagina']) && in_array($_GET['pagina'],$toegestaan)){
if(file_exists($_GET['pagina'].".php")){
include($_GET['pagina'].".php");
}
else{
include("index.php");
}
else{
include("index.php");
}
'pagina';
if(isset($_GET['pagina']) && in_array($_GET['pagina'],$toegestaan)){
if(file_exists($_GET['pagina'].".php")){
include($_GET['pagina'].".php");
}
else{
include("index.php");
}
else{
include("index.php");
}
Alleen na een tijdje gewerkt te hebben met beide methodes vind ik de tweede methode in iedergeval niet gemakkelijker werken dan de switch methode. Nu is mijn vraag is de tweede methode inderdaad beter en gemakkelijker dan de switch methode en in welke opzichten (in welke situaties)?
Gewijzigd op 01/01/1970 01:00:00 door Bassos
het ligt er totaal aan met wat je te maken krijgt. Zijn het enkel een hoop waardes om te vergelijken dan is een switch makkelijker, maar moet je steeds verschillende dingen controleren zijn else/if/elseifjes het makkelijkst
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$toegestaan = array('index', 'pagina1', 'pagina2');
if(isset($_GET['pagina']) && in_array($_GET['pagina'],$toegestaan) && file_exists($_GET['pagina'].".php")){
$page = $_GET['pagina'].".php";
}
else{
$page = $toegestaan[0]; // de eerste uit de array
}
include_once($page.'.php');
?>
$toegestaan = array('index', 'pagina1', 'pagina2');
if(isset($_GET['pagina']) && in_array($_GET['pagina'],$toegestaan) && file_exists($_GET['pagina'].".php")){
$page = $_GET['pagina'].".php";
}
else{
$page = $toegestaan[0]; // de eerste uit de array
}
include_once($page.'.php');
?>
Het enige onderhoud dat je nu hoeft te doen, is de array aanpassen wanneer er pagina's bijkomen of afgaan. In een switch moet je echt code gaan toevoegen/verwijderen wat meer risico's inhoud. En dat wil je niet.
Ik gebruik zelf altijd de 2de methode, veilig en handig. het enige nadeel is dat je voor elke nieuwe pagina je $toegestaan moet aanpassen. Maar bij het ontwikkelen van je website kan je dit even weghalen (of //) en als je klaar bent alle pagina's toevoegen. de eerste methode is meer werk...
Als je een switch een beetje netjes neerzet werkt het prima...
Met bijvoorbeeld een fotoalbum die genereert automatisch pagina's met de fotos erop en crëeert deze link.
index.php?pagina=fotoalbum&foto=1
of
index.php?foto=1&pagina=fotoalbum
Bij de switch methode dan voldoet het als je alleen de pagina fotoalbum definieert en worden de links vanzelf opgenomen in de index. Maar bij de andere methode krijg ik ze niet werkend.
Weet iemand hoe ik dat wel werkend kan krijgen??
Gewijzigd op 01/01/1970 01:00:00 door Bassos
je controleert $_GET['pagina'] dus je moet fotoalbum toevoegen aan de array met valid pages. dan zou het moeten werken.
index.php?pagina=fotoalbum
maar de volgende wel:
index.php?pagina=fotoalbum&foto=1
Met de eerste link ga je naar het fotoalbum toe. En als je op de thumbnails klikt (die hebben de tweede link) ga je naar de pagina waarop de volledige foto staat.
En dat tweede gedeelte krijg ik niet voor elkaar.