PHP ile Basit Bir Blog Sitesi Yapma
Bu örnekte, PHP ile basit bir blog sitesi yapacağız. Bu blog sitesinde, kullanıcılar kayıt olabilecek, giriş yapabilecek, yazılarını görebilecek ve yeni yazılar ekleyebilecekler.
Veritabanı
Öncelikle, veritabanımızı oluşturalım. blog
adında bir veritabanı ve iki tablo oluşturacağız: kullanicilar
ve yazilar
.
CREATE TABLE kullanicilar (
id INT AUTO_INCREMENT PRIMARY KEY ,
kullanici_adi VARCHAR ( 50 ) NOT NULL UNIQUE ,
sifre VARCHAR ( 255 ) NOT NULL
id INT AUTO_INCREMENT PRIMARY KEY ,
baslik VARCHAR ( 255 ) NOT NULL ,
tarih TIMESTAMP DEFAULT CURRENT_TIMESTAMP
Uygulamamızın Dosya Yapısı
Uygulamanın dosya yapısı şu şekilde olmalıdır:
Veritabanı Bağlantısı
Veritabanı bağlantısını sağlayacak includes/baglan.php
dosyası:
$db = new PDO ( " mysql:host= $host ;dbname= $dbname ;charset=utf8 " , $username , $password );
$db -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
} catch ( PDOException $e ) {
die ( " Veritabanı bağlantısı başarısız: " . $e -> getMessage ());
Başlık ve Menü
Sayfalarımızın başlık ve menü kısmını sağlayacak includes/baslik.php
ve includes/nav.php
dosyalarını oluşturalım:
< meta http - equiv = " X-UA-Compatible " content = " IE=edge " >
< meta name = " viewport " content = " width=device-width, initial-scale=1.0 " >
< title > Blog Sitesi </ title >
< link rel = " stylesheet " href = " /css/style.css " >
< a href = " /index.php " > Anasayfa </ a >
< a href = " /pages/yazilar.php " > Yazılar </ a >
<? php if ( isset ($ _SESSION [ " kullanici_id " ])) : ?>
< a href = " /pages/yeni-yazi.php " > Yeni Yazı </ a >
< a href = " /actions/cikis.php " > Çıkış Yap </ a >
<? php if ( ! isset ($ _SESSION [ " kullanici_id " ])) : ?>
< a href = " /pages/kayit.php " > Kayıt Ol </ a >
< a href = " /pages/giris.php " > Giriş Yap </ a >
Sayfalarımızın alt kısmını sağlayacak includes/footer.php
dosyasını oluşturalım:
Kayıt Sayfası
Kayıt sayfamızı sağlayacak pages/kayit.php
dosyasını oluşturalım:
<? php include " ../includes/baslik.php " ; ?>
<? php include " ../includes/nav.php " ; ?>
< form action = " ../actions/kayit.php " method = " post " >
< label for= " kullanici_adi " > Kullanıcı Adı :</ label >
< input type = " text " name = " kullanici_adi " id = " kullanici_adi " required >< br >
< label for= " sifre " > Şifre :</ label >
< input type = " password " name = " sifre " id = " sifre " required >< br >
< input type = " submit " value = " Kayıt Ol " >
<? php include " ../includes/footer.php " ; ?>
Kayıt İşlemi
Kayıt işlemini sağlayacak actions/kayit.php
dosyasını oluşturalım:
include " ../includes/baglan.php " ;
if ( $_SERVER [ " REQUEST_METHOD " ] == " POST " ) {
$kullanici_adi = trim ( $_POST [ " kullanici_adi " ]);
$sifre = password_hash ( trim ( $_POST [ " sifre " ]), PASSWORD_DEFAULT );
$query = $db -> prepare ( " INSERT INTO kullanicilar (kullanici_adi, sifre) VALUES (?, ?) " );
$query -> execute ([ $kullanici_adi , $sifre ]);
header ( " Location: ../pages/giris.php " );
Giriş Sayfası
Giriş sayfamızı sağlayacak pages/giris.php
dosyasını oluşturalım:
<? php include " ../includes/baslik.php " ; ?>
<? php include " ../includes/nav.php " ; ?>
< form action = " ../actions/giris.php " method = " post " >
< label for= " kullanici_adi " > Kullanıcı Adı :</ label >
< input type = " text " name = " kullanici_adi " id = " kullanici_adi " required >< br >
< label for= " sifre " > Şifre :</ label >
< input type = " password " name = " sifre " id = " sifre " required >< br >
< input type = " submit " value = " Giriş Yap " >
<? php include " ../includes/footer.php " ; ?>
Giriş İşlemi
Giriş işlemini sağlayacak actions/giris.php
dosyasını oluşturalım:
include " ../includes/baglan.php " ;
if ( $_SERVER [ " REQUEST_METHOD " ] == " POST " ) {
$kullanici_adi = trim ( $_POST [ " kullanici_adi " ]);
$sifre = $_POST [ " sifre " ];
$query = $db -> prepare ( " SELECT * FROM kullanicilar WHERE kullanici_adi = ? " );
$query -> execute ([ $kullanici_adi ]);
$kullanici = $query -> fetch ( PDO :: FETCH_ASSOC );
if ( $kullanici && password_verify ($ sifre , $ kullanici [ " sifre " ])) {
$_SESSION [ " kullanici_id " ] = $kullanici [ " id " ];
$_SESSION [ " kullanici_adi " ] = $kullanici [ " kullanici_adi " ];
echo " Kullanıcı adı veya şifre hatalı! " ;
Çıkış İşlemi
Çıkış işlemini sağlayacak actions/cikis.php
dosyasını oluşturalım:
header ( " Location: ../pages/anasayfa.php " );
Yazılar Sayfası
Yazılar sayfamızı sağlayacak pages/yazilar.php
dosyasını oluşturalım:
<? php include " ../includes/baslik.php " ; ?>
<? php include " ../includes/nav.php " ; ?>
<? php include " ../includes/baglan.php " ; ?>
$query = $db -> query ( " SELECT * FROM yazilar " );
$yazilar = $query -> fetchAll ( PDO :: FETCH_ASSOC );
<? php foreach ( $yazilar as $yazi ) : ?>
< h2 ><?= $yazi [ " baslik " ] ?></ h2 >
< p ><?= $yazi [ " icerik " ] ?></ p >
<? php include " ../includes/footer.php " ; ?>
Yeni Yazı Sayfası
Yeni yazı sayfamızı sağlayacak pages/yeni-yazi.php
dosyasını oluşturalım:
<? php include " ../includes/baslik.php " ; ?>
<? php include " ../includes/nav.php " ; ?>
<? php if ( ! isset ($ _SESSION [ " kullanici_id " ])) : ?>
< p > Yazı eklemek için giriş yapmalısınız . </ p >
< a href = " giris.php " > Giriş yapmak için tıklayın . </ a >
<? php if ( isset ($ _SESSION [ " kullanici_id " ])) : ?>
< form action = " ../actions/yeni-yazi.php " method = " post " >
< label for= " baslik " > Başlık :</ label >
< input type = " text " name = " baslik " id = " baslik " required >< br >
< label for= " icerik " > İçerik :</ label >
< textarea name = " icerik " id = " icerik " required ></ textarea >< br >
< input type = " submit " value = " Yazıyı Kaydet " >
<? php include " ../includes/footer.php " ; ?>
Yeni Yazı İşlemi
Yeni yazı işlemini sağlayacak actions/yeni-yazi.php
dosyasını oluşturalım:
include " ../includes/baglan.php " ;
if ( $_SERVER [ " REQUEST_METHOD " ] == " POST " ) {
$baslik = trim ( $_POST [ " baslik " ]);
$icerik = trim ( $_POST [ " icerik " ]);
$query = $db -> prepare ( " INSERT INTO yazilar (baslik, icerik) VALUES (?, ?) " );
$query -> execute ([ $baslik , $icerik ]);
header ( " Location: ../pages/yazilar.php " );
CSS Dosyası
CSS dosyamızı sağlayacak css/style.css
dosyasını oluşturalım:
font-family : ' Arial ' , sans-serif ;
background-color : # f4f4f9 ;
background-color : # 4CAF50 ;
box-shadow : 0 4 px 6 px rgba ( 0 , 0 , 0 , 0.1 );
box-shadow : 0 4 px 6 px rgba ( 0 , 0 , 0 , 0.1 );
transition : color 0.3 s ease ;
box-shadow : 0 4 px 8 px rgba ( 0 , 0 , 0 , 0.1 );
form input [ type = " password " ],
form input [ type = " submit " ] {
background-color : # 4CAF50 ;
transition : background-color 0.3 s ease ;
form input [ type = " submit " ] :hover {
background-color : # 45a049 ;
box-shadow : 0 4 px 8 px rgba ( 0 , 0 , 0 , 0.1 );
@media ( max-width : 768 px ) {
Ana Sayfa
Son olarak, uygulamamızın ana sayfası olan index.php
dosyasını oluşturalım:
<? php include " includes/baslik.php " ; ?>
<? php include " includes/nav.php " ; ?>
<! -- EĞER SESSİON VARSA HOŞGELİNİZ YAZISI OLSUN -- >
<? php if ( isset ($ _SESSION [ " kullanici_id " ])) : ?>
< p > Hoş geldiniz , < span style = " color:red " ><? php echo $_SESSION [ " kullanici_adi " ]; ?>!</ span ></ p >
< p > Hoş geldiniz ! Bu blog sitesinde yazılar paylaşabilirsiniz . </ p >
<? php include " includes/footer.php " ; ?>
Uygulamamızı Çalıştırma
Artık uygulamamızı çalıştırabiliriz. Uygulamamızı çalıştırmak için, bir web sunucusu (örneğin, Apache) kullanabiliriz. Örneğin, XAMPP veya Wampserver gibi bir web sunucusu kurabilir veya php kurulu ise php -S localhost:80
komutu ile yerel bir web sunucusu başlatabiliriz.
Uygulamamızı çalıştırmak için, web sunucumuzun kök dizinine (htdocs
veya www
gibi) blog
adında bir klasör oluşturup, bu klasörün içine yukarıda oluşturduğumuz dosyaları kopyalayabiliriz. Daha sonra, web tarayıcımızda http://localhost/blog
adresine giderek uygulamamızı görebiliriz.
Uygulamamızı çalıştırdığımızda, karşımıza bir blog sitesi çıkacak. Bu blog sitesinde, kullanıcılar kayıt olabilecek, giriş yapabilecek, yazılarını görebilecek ve yeni yazılar ekleyebilecekler.
Uygulamamızın yönetim paneline erişmek için, http://localhost/blog/yonetim/giris.php
adresine gidebiliriz. Yönetim paneline giriş yapabilmek için, kayıt olup giriş yapmamız gerekmektedir.
Uygulamamızı geliştirmeye devam edebilir ve yeni özellikler ekleyebiliriz. Örneğin, yazıları düzenleme, silme, yorum ekleme gibi özellikler ekleyebiliriz. Ayrıca, uygulamamızın tasarımını geliştirebilir ve daha kullanıcı dostu hale getirebiliriz.
Bu örnekte, PHP ile basit bir blog sitesi yapmayı öğrendik. PHP’nin sunduğu veritabanı bağlantısı, form işleme, oturum yönetimi gibi özellikleri kullanarak, gerçek bir uygulama geliştirdik. Bu örneği inceleyerek, PHP ile nasıl uygulama geliştirebileceğinizi öğrenebilir ve kendi projelerinizi geliştirebilirsiniz.