PHP / MySQL / .htaccess ile Arama Motorlarının ve Ziyaretçilerin Anlayacağı Şekilde URL Yapılandırması (SEF URL), HEADER ve FOOTER MasterPage Kodlamak

CREATE TABLE IF NOT EXISTS `sefurltest` (
ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
SAYFA_BASLIGI varchar(70) NOT NULL UNIQUE,
SAYFA_ICERIGI text CHARACTER SET utf32 NOT NULL,
SEFURL varchar(150) NOT NULL
) ;
INSERT INTO sefurltest (SAYFA_BASLIGI, SAYFA_ICERIGI, SEFURL) 
VALUES ("Ana Sayfa", "Sitemizin ana sayfasına hoşgeldiniz", "ana-sayfa");
INSERT INTO sefurltest (SAYFA_BASLIGI, SAYFA_ICERIGI, SEFURL)
VALUES ("Hakkımızda", "Bu sayfada size biraz kendimizden bahsedeceğiz...", "hakkimizda");
INSERT INTO sefurltest (SAYFA_BASLIGI, SAYFA_ICERIGI, SEFURL)
VALUES ("İletişim", "Merhaba. ugurgelisken@gmail.com adresinden bana yazabilirsiniz", "iletisim");
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^sayfa/([a-zA-Z0-9]+)/$ /~ugurgelisken/sayfagetir.php?sayfa=$1 [L1]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="TR"/>
</head>
<body>
<b>MENÜ</b>
<hr />
<?php

# PHP AÇILIŞ
# Veritabanı için gerekli olan bilgiler:
/* Sunucu adı, veritabanı kullanıcı adı, veritabanı kullanıcı şifresi, veritabanı adı, veritabanı tablo ismi. */

$host = "localhost";
$user = "ugurgeli_ugur";
$pwd = "okspelial";
$db = "ugurgeli_sefurl";
$tablo = "sefurltest";

# conn adında bir değişken ile veritabanına bağlanıyoruz.
# veritabanına bağlanılırsa true sonucu bu değişkene atanacak.
# eğer veritabanına bağlanılamazsa hata sonucu ekranda yazdırılacak.

$conn = mysql_connect($host,$user,$pwd) or die("Veritabanı bağlanma hatası " .mysql_error());

# veritabanına bağlandıktan sonra tablo seçilmeli.

mysql_select_db($db) or die("Tablo seçilmedi ".mysql_error());

# PhpMyAdmin'de veritabanı karakter setini belirlemiştik.
/* ancak olası bir karakter sorunu ile karşılaşmamak için tekrar karakter setlerini düzenliyoruz. */

mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION='utf8_general_ci'");
# bir sorgu oluşturuyoruz.
# bu sorgu ile tablodaki tüm verileri çekiyoruz.
# çektiğimiz verileri veri değişkenine aktarıyoruz.

$veri = mysql_query("select * from $tablo");
# eğer sorgu sonucunda satır sayısı 0'dan fazlaysa...
# yani veri varsa...

if(mysql_num_rows($veri)!=0)
{
# bir while döngüsü ile veriler değişkenden satır satır okunuyor.
# okunan her satır değeri okunan değişkenine aktarılıyor.

while($okunan = mysql_fetch_assoc($veri))
{
# menüdeki butonları oluşturacak linkler hazırlanıyor.
/* okunan değişkeninden SEFURL ve SAYFA_BASLIGI sütunlarına ait değerler çekiliyor. */
# elde edilen değerlerle linkler oluşturuluyor.

echo "
<a href='/~ugurgelisken/sayfa/".$okunan["SEFURL"]."'>"
.$okunan["SAYFA_BASLIGI"]."</a><br><br>";
}
}else{
# eğer veri bulunamazsa verinin bulunmadığını sayfada yazdırıyoruz.
echo "İçerik bulunamadı!";
}

# veritabanı ile bağlantıyı kapatıyoruz.
mysql_close($conn);

# PHP KAPANIŞ

?>
</body>
</html>
404 Not Found
The server can not find the requested page:
http://195.142.1.243/~ugurgelisken/sayfa/ana-sayfa (port 80)
Please forward this error screen to 195.142.1.243's WebMaster.
Apache/2.2.29 (Unix) mod_ssl/2.2.29 OpenSSL/1.0.1e-fips mod_bwlimited/1.4 Server at 195.142.1.243 Port 80
<?php# veritabanı bağlantı bilgileri$host = "localhost";
$user = "ugurgeli_ugur";
$pwd = "okspelial";
$db = "ugurgeli_sefurl";
$tablo = "sefurltest";
# URL'den gelen sayfa değişkeni parametresi sefurl_parametre değişkenine aktarılıyor
# Yani http://195.142.1.243/~ugurgelisken/sayfagetir.php?sayfa=ana-sayfa
# Böyle bir adreste sayfa değişkeni değeri ana-sayfa'dır.
$sefurl_parametre = mysql_escape_string($_GET['sayfa']);# HTML5 sayfasını oluşturuyoruz.
# echo ile sayfanın kodlarını PHP içinde yazdırıyoruz.
# Tek satırda da yazdırabilirsiniz ama alt alta daha düzenli olur.
echo "<!DOCTYPE html>
<html>
<head>
<meta charset=\"utf-8\">
";

# veritabanına bağlanılıyor...
$conn = mysql_connect($host,$user,$pwd) or die("Veritabanı bağlanma hatası ".mysql_error());# tabloya bağlanılıyor...
mysql_select_db($db) or die("Veritabanı seçilmedi".mysql_error());
# sorgu sonrası gelen verilerde Türkçe karakter bozukluklarını düzenliyoruz...mysql_query("SET character_set_results=utf8");# değişken tanımlıyoruz ve sorguya göre gelen değeri alıyoruz.
# sorgumuzda anahtar parametremiz GET ile URL'den aldığımız sayfa değişkeni değeridir.
# yukarıdaki örneğimizde ana-sayfa'dır.
# böylece sadece tek bir sayfanın değerleri alınacak.
$sayfa_sorgu_sonucu =
mysql_query("SELECT * FROM sefurltest WHERE SEFURL='$sefurl_parametre'");
# eğer sonuç boş değilse...
# sayfayı bir biçimde yazdırmamız gerekiyor.
# biçim olarak ana başlık h1 etiketi ile sayfada ortalı.
# ardından hr etiketi ile yatay bir çizgi çekiyoruz.
# sayfa metni justify text ile yazdırılacak.
# sayfa bağlantısı da sayfanın en altında gösterilecek.
# ayrıca sayfa bağlığına göre <title> tekrar düzenlenecek.
if(mysql_num_rows($sayfa_sorgu_sonucu)!=0)
{
while($okunan = mysql_fetch_assoc($sayfa_sorgu_sonucu))
{
# <title> etiketi ile sayfa başlığı düzenleniyor.
# sonra da <head> etiketi kapatılıp <body> etiketi açılıyor.
# body etiketi içinde de sayfa yazdırılıyor.
echo "<title>".$okunan["SAYFA_BASLIGI"]."</title>
</head>
<body>
";
# Sayfa başlığı
echo "<div align='center'><h1>".$okunan["SAYFA_BASLIGI"]."</h1>
</div><br><hr />";
# Sayfa içeriği
echo "<div align='justify'>".$okunan["SAYFA_ICERIGI"]."</div><br>";
# Sayfa bağlantı adresi
echo "Sayfa adresi:
<a href='/~ugurgelisken/sayfa/".$okunan["SEFURL"]."'>Sayfaya gitmek için tıklayın</a>";
}
# sonuç boşsa...
}else{
# sayfa bulunamadığı için hata kodu verdiriyoruz.
echo "404 Sayfa bulunamadı!";
}
# veritabanı bağlantısı kapatılıyor.
mysql_close($conn);
?></body>
</html>

--

--

Full-stack Developer [ UI / UX | JAM Stack | ME(A,R,V)N | LAMP ], Author, Pro Gamer

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store