I’m having a little problem. I want to securely include files based on the $_GET Parameter from a subdirectory + handle if the parameter is not valid.
<?php
if(isset($_GET['p']) && $_GET['p'] == 'fahrzeuge'){
include 'includes/cars.php';
}
if(isset($_GET['p']) && $_GET['p'] == 'impressum'){
include 'includes/impressum.php';
}
if(isset($_GET['p']) && $_GET['p'] == 'home'){
include 'includes/home.php';
}
if(isset($_GET['p']) && $_GET['p'] == 'anfahrt'){
include 'includes/anfahrt.php';
}
if(isset($_GET['p']) && $_GET['p'] == 'about'){
include 'includes/about.php';
}
?>
This is my Code. Sorry I know it is a noob way of solving this. How can I improve it? Any Suggestions/Help would be highly appreciated
Advertisement
Answer
I would use a ternary to set a variable that tells the page what to include.
This is very similar to Ofir Baruch‘s answer, except much shorter.
$pages = array('about','contact','home');
$p = isset($_GET['p']) && in_array($_GET['p'], $pages)? $_GET['p'] : 'home';
include "includes/{$p}.php";
Basically, you have an array of pages that are possible. In the ternary, we check if $_GET['p']
is set (isset()
), AND we check if the value it contains is in the array. If it is, we use $_GET['p']
as $p
, if it is not, we set $p
to home
, this means that home
will always be the default if $_GET['p']
is not set, or not a valid page as per the array.