⚈ Kuopassa.net

Lisää kertomuksia netistä. 摆烂

Dynaaminen sivujärjestelmä PHP:lla

Jos nettisivuilla ei ole julkaisujärjestelmää ja halutaan helpottaa eri sivujen kanssa työskentelyä, sivuille voidaan PHP:n avulla taikoa yksinkertainen "dynaamisena sivujärjestelmänä" tunnettu toiminnallisuus. Sen avulla URL-osoite vaikuttaa siihen mitä juttuja nettisivuilla näytetään. Tällä koodilla nettisivuston eri sivut löytyvät osoitteesta, joka on muotoa nettisivu.fi/?sivu=sivunnimi. Esimerkiksi jokin palautelomake voisi löytyä osoitteesta ?sivu=palautelomake ja linkkilista osoitteesta ?sivu=linkkilista.

<?php
// TÄSSÄ TEHDÄÄN TARKISTUKSIA
if ((isset($_GET['sivu'])) &&
(!empty($_GET['sivu'])) &&
(!is_numeric($_GET['sivu'])) &&
(!is_array($_GET['sivu'])) &&
(strlen($_GET['sivu']) <= 50) &&
(ctype_alnum($_GET['sivu']))) {

$sivu =
strip_tags(trim(strtolower(filter_var($_GET['sivu'],
FILTER_SANITIZE_STRING,FILTER_FLAG_STRIP_HIGH))));
?>

<?php
// TÄSSÄ PALAUTELOMAKE
if ($sivu === 'palautelomake') { ?>
<p>Tässä on palautelomake.</p>
<?php } ?>

<?php
// TÄSSÄ LINKKILISTA
if ($sivu === 'linkkilista') { ?>
<p>Tässä on linkkilista.</p>
<?php } ?>

<?php } else { ?>
// JOS SIVUA EI OLE MÄÄRITELTY,
// OLLAAN VAIKKAPA ETUSIVULLA
?>
<p>Tässä on etusivu.</p>
<?php } ?>

Tuossa koodiesimerkissäni tsekataan, että $_GET['sivu'] on asetettu (isset), ettei se ole tyhjä (!empty), ettei se ole pelkkä numero (!is_numeric), ettei se ole array (!is_array), ettei sen pituus ole enempää kuin 50 merkkiä (strlen) ja ettei se sisällä kuin aakkosia ja numeroita (ctype_alnum). Jos nämä ehdot täyttyvät, silloin $_GET['sivu'] siistitään ja homma jatkuu. Tätä hommaa voisi kehitellä eteenpäin laittamalla .htaccessin avulla sivulle puhtaat URL-osoitteet.

Tietoa kirjoittajasta