⊗ppPmSDRt 444 of 447 menu

PHP Motorunda Basit Yönlendirme

Önceki derste sitemizde sadece bir URL grubu vardı. Tabii ki, genellikle bir sitede birkaç farklı adres türü bulunur.

Her adres grubu, kendi düzenli ifadeleriyle işlenecek, bunlara rotalar denir. Buna bağlı olarak rotaları ve onları işlemek için gereken kodu eşleştirme sürecine yönlendirme denir.

Örneğin, iki tür adresimiz olduğunu varsayalım. Her grup için kendi rotamızı yazalım:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { // slug'a göre tek bir sayfa } if (preg_match('#^/page/all$#', $url, $params)) { // tüm sayfaların listesi } ?>

Kolaylık olması için her rotanın işlem kodunu ayrı bir dosyaya alalım:

<?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'; } ?>

Bağlanan dosyalar, sonuç olarak sayfanın başlığını ve içeriğini içeren bir dizi döndürmelidir.

Slug'ına göre tek bir sayfa gösteren ilk dosyanın kodunu yazalım:

<?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; ?>

Şimdi de tüm sayfalara bağlantı listesi gösteren ikinci dosyanın kodunu yazalım:

<?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' => 'tüm sayfalar', 'content' => $content ]; return $page; ?>

Koşullardan birinin çalışmasından sonra $page değişkeninde her zaman aynı yapıda bir dizi olacaktır. Bu diziyi kullanarak site şablonuna başlık ve içerik ekleyelim:

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

Hepsini bir araya getirip aşağıdaki kodu elde edelim:

<?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; ?>

Kullanıcıların olduğu bir siteniz olduğunu varsayalım. Bir kullanıcıyı göstermek için bir sayfa, tüm kullanıcıları listelemek için bir sayfa ve yeni kullanıcı eklemek için form içeren bir sayfa yapın.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet