⊗ppPmSDRt 444 of 447 menu

Yksinkertainen reititys PHP-moottorissa

Edellisessä oppitunnilla sivustollamme oli vain yksi URL-ryhmä. Tietysti tavallisesti sivustolla on useita erityyppisiä osoitteita.

Jokainen osoiteryhmä käsitellään omalla säännöllisellä lausekkeellaan, joita kutsutaan reiteiksi. Vastaavasti reittien ja niiden käsittelykoodin yhdistämisprosessia kutsutaan reititykseksi.

Oletetaan esimerkiksi, että meillä on kaksi tyyppiä osoitteita. Kirjoitetaan jokaiselle ryhmälle oma reittinsä:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { // yksi sivu slug:n perusteella } if (preg_match('#^/page/all$#', $url, $params)) { // lista kaikista sivuista } ?>

Mukavuuden vuoksi erotetaan jokaisen reitin käsittelykoodi omaan tiedostoonsa:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { $page = include 'view/page/show.php'; } if (preg_match('#^/page/all$#', $url, $params)) { $page = include 'view/page/all.php'; } ?>

Include-tiedostojen tulisi palauttaa tuloksenaan taulukko, jossa on sivun otsikko ja sisältö.

Kirjoitetaan ensimmäisen tiedoston koodi, joka näyttää yhden sivun sen slug:n perusteella:

<?php $slug = $params[1]; $query = "SELECT * FROM pages WHERE slug='$slug'"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); $page = mysqli_fetch_assoc($res); return $page; ?>

Ja nyt kirjoitetaan toisen tiedoston koodi, joka näyttää listan linkeistä kaikkiin sivuihin:

<?php $query = "SELECT slug, title FROM pages"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); for ($data = []; $row = mysqli_fetch_assoc($res); $data[] = $row); $content = ''; foreach ($data as $page) { $content .= ' <div> <a href="/page/' . $page['slug'] . '">' . $page['title'] . '</a> </div> '; } $page = [ 'title' => 'kaikki sivut', 'content' => $content ]; return $page; ?>

Yhden ehdon suorittamisen jälkeen muuttujassa $page on aina taulukko, joka koostuu yhdestä rakenteesta. Käytetään tätä taulukkoa asettamaan otsikko ja sisältö sivuston pohjaan:

<?php $layout = file_get_contents('layout.php'); $layout = str_replace('{{ title }}', $page['title'], $layout); $layout = str_replace('{{ content }}', $page['content'], $layout); echo $layout; ?>

Kootaan kaikki yhteen ja saadaan seuraava koodi:

<?php $url = $_SERVER['REQUEST_URI']; if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { $page = include 'view/page/show.php'; } if (preg_match('#^/page/all$#', $url, $params)) { $page = include 'view/page/all.php'; } $layout = file_get_contents('layout.php'); $layout = str_replace('{{ title }}', $page['title'], $layout); $layout = str_replace('{{ content }}', $page['content'], $layout); echo $layout; ?>

Oletetaan, että sinulla on sivusto käyttäjillä. Tee sivu yhden käyttäjän näyttämiseen, sivu kaikkien käyttäjien listaukseen ja sivu lomakkeella uuden käyttäjän lisäämiseen.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää