Een vraag over inloggen.
Bouw anders eens een file_exists() controle in bij je include, dan kan je meteen opvangen of een bestand bestaat. Het zou nog mooier zijn om de beschikbare pagina's in een array te definiëren.
Ik heb er dit van gemaakt:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
if($page == "viewreport"){
if(file_exists(viewreport.php)){
include"viewreport.php";
} else{
echo"Could not find page.";
}
}
if(file_exists(viewreport.php)){
include"viewreport.php";
} else{
echo"Could not find page.";
}
}
En hij zegt inderdaad Could not find page.
Dit is zo vreemd want paginas zoals index.php?p=account werkt prima.
zelfs index.php?p=viewreport zegt wrong page.
terwijl viewreport.php het gewoon doet en ze echt in de zelfde map staan.
Gewijzigd op 23/02/2018 13:47:17 door Jasper Schellekens
Je hebt nu een procedure geschreven voor een enkele pagina. Ga je dit stukje code steeds herhalen voor een nieuwe pagina? Denk aan DRY oftewel Don't Repeat Yourself.
Maak dan een array aan waarin je alle bestanden plaatst die geincludeerd mogen worden. Vervolgens kijk je met in_array of een bestand voorkomt, en als dat zo controleer je of deze daadwerkelijk bestaat. En als deze bestaat, dan includeer je hem.
Dan krijg je dus zoiets:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$allowed_pages = array('viewreport','editreport','deletereport');
if(isset($_GET['p']))
if(in_array($_GET['p']', $allowed_pages)) {
if(file_exists($_GET['p']".php")){
include $_GET['p']."php";
} else {
echo "Could not find page.";
}
} else {
echo "This page is not allowed.";
}
} else {
echo "Er is geen keuze gemaakt in de URL.";
}
?>
$allowed_pages = array('viewreport','editreport','deletereport');
if(isset($_GET['p']))
if(in_array($_GET['p']', $allowed_pages)) {
if(file_exists($_GET['p']".php")){
include $_GET['p']."php";
} else {
echo "Could not find page.";
}
} else {
echo "This page is not allowed.";
}
} else {
echo "Er is geen keuze gemaakt in de URL.";
}
?>
Dit heeft inderdaad gewerkt. Bedankt.