No dla przykładu, można założyć że nazwy plików będą zawierały
tylko litery i cyfry.
Wtedy można napisać coś takiego:
<?php
if(ctype_alnum($_GET['id']===false))
{
$id = 'blad';
}
else
{
$id = $_GET['id'];
}
switch($id)
{
case 'a':
include('a.php');
break;
case 'b':
include('b.php');
break;
case 'c':
include('c.php');
break;
default:
include('a.php');
break;
}
?>
Jak to zadziała ?
if(ctype_alnum($_GET['id']===false))
ctype_alnum oznacza że przekazany ciąg może zawierać tylko
litery i cyfry. Więcej możesz przeczytać
tutaj.
Można to zapisać w postaci:
if(ctype_alnum($_GET['id']))
gdyż funkcja zwraca
true albo
false ale nie chciałem Ci motać. Po co znak identyczności ? (
===). Po to by w wypadku gdy parametr wynosił
zero, skrypt nie odebrał go jako
false. Identyczność rozróżnia
0 od
false gdzie operator porównania (
==) tej różnicy nie widzi.
W każdym razie dalej chyba zrozumiałe, jeżeli
ciąg jest zły to zmienna
$id dostaje wartość
blad. Można to zostawić albo wykorzystać w switchu. Jeżeli ktoś nie podał wartości (wszedł przez link w stylu
www.mojastrona.pl zamiast
www.mojastrona.pl?id=c lub jeżeli podany parametr będzie inny niż ten który jest podany w
switch to zostanie domyślnie wczytana strona
a.php.
Teraz czemu się czepiałem. Obecnie skrypt jest ok ale np przy większej ilości podstron szkoda się ze switchem bawić. Do tego ma on to do siebie że wszyta wszystkie podstrony a następnie doda tą którą mu każesz poprzez parametr. Lepiej zrobić tak że dołączony zostanie plik o nazwie będącej parametrem z rozszerzeniem php pod warunkiem że plik istnieje. Np coś takiego:
<?php
if(ctype_alnum($_GET['plik']===false))
{
$plik= 'blad.php';;
}
else
{
$plik= $_GET['plik'].'.php';
}
if(file_exists($plik)===true)
{
include($plik);
}
else
{
include('blad.php');
}
To oczywiście tylko przykład. W takim wypadku wymagana jest filtracja $_GET musi być przeprowadzona ale bierz pod uwagę że jeżeli chce dołączyć kolejny plik, np z podstroną to nie edytuje absolutnie niczego. Zwyczajnie dokładam plik do innych i dodaje link w menu. W wypadku wywołania albo plik zostanie dodany albo zostanie dodana strona blad.php z odpowiednią informacją.