PHP ile Dinamik Web Siteleri Geliştirme Temelden İleri Seviyeye

PHP ile Dinamik Web Siteleri Geliştirme Temelden İleri Seviyeye

PHP 01 Mar 2025 Ahmet Halit DURUSOY Ahmet Halit DURUSOY 10 dakika okuma
Paylaş:

PHP ile Dinamik Web Siteleri Geliştirme: Temelden İleri Seviyeye

PHP (Hypertext Preprocessor), dinamik web siteleri ve web uygulamaları geliştirmek için tasarlanmış, açık kaynaklı ve popüler bir programlama dilidir. 1994 yılında Rasmus Lerdorf tarafından geliştirilen PHP, günümüzde web dünyasında en yaygın kullanılan server-side dillerden biridir. WordPress, Facebook ve Wikipedia gibi büyük projeler, temel olarak PHP üzerine inşa edilmiştir.

Bu makalede, PHP ile dinamik web uygulamaları geliştirme sürecini temelden ileri seviyeye kadar ele alacağız. PHP'nin temel yapısından, modern framework kullanımına, veritabanı entegrasyonundan güvenlik önlemlerine kadar kapsamlı bir rehber sunacağız.

PHP Nedir ve Neden Kullanılır?

PHP, server-side (sunucu taraflı) çalışan bir dildir. Yani kodlar web sunucusunda işlenir ve sonuçlar HTML olarak istemci tarayıcısına gönderilir. Bu özellik, dinamik web sitesi yapımı için PHP'yi ideal kılar. PHP'nin web geliştirme alanında tercih edilmesinin başlıca sebepleri:

  1. Kolay öğrenilebilir bir sözdizimi vardır
  2. Hemen hemen tüm web sunucularıyla uyumludur
  3. Ücretsiz ve açık kaynaklıdır
  4. Geniş bir topluluk desteği sunar
  5. MySQL, PostgreSQL gibi veritabanlarıyla kolay entegrasyon sağlar
  6. WordPress, Drupal, Joomla gibi popüler CMS'ler PHP tabanlıdır

PHP ile Başlangıç

Kurulum ve Ortam Hazırlama

PHP ile web geliştirme serüvenine başlamak için öncelikle geliştirme ortamını hazırlamalısınız. Bunun için XAMPP, WAMP veya MAMP gibi paketler tercih edilebilir. Bu paketler PHP, MySQL ve Apache gibi gerekli tüm bileşenleri içerir.

<?php
    // İlk PHP programınız
    echo "Merhaba Dünya!";
?>

PHP Temel Sözdizimi

PHP kodları <?php ve ?> etiketleri arasına yazılır. Bu etiketler, sunucuya hangi kodun PHP olarak yorumlanması gerektiğini belirtir. PHP dersleri sırasında öğrenilecek temel kavramlar:

Değişkenler ve Veri Tipleri

<?php
    $isim = "Ahmet"; // String
    $yas = 25; // Integer
    $boy = 1.78; // Float
    $ogrenci_mi = true; // Boolean
    $hobiler = array("Yüzme", "Kitap Okuma", "Kodlama"); // Dizi
?>

Koşullu İfadeler

<?php
    $saat = date("H");
    
    if ($saat < 12) {
        echo "Günaydın!";
    } elseif ($saat < 18) {
        echo "İyi günler!";
    } else {
        echo "İyi akşamlar!";
    }
?>

Döngüler

<?php
    // For döngüsü
    for ($i = 1; $i <= 5; $i++) {
        echo "$i ";
    }
    
    // While döngüsü
    $sayac = 1;
    while ($sayac <= 5) {
        echo "$sayac ";
        $sayac++;
    }
    
    // Foreach döngüsü
    $meyveler = array("Elma", "Armut", "Muz");
    foreach ($meyveler as $meyve) {
        echo "$meyve ";
    }
?>

Fonksiyonlar

<?php
    function selamla($isim) {
        return "Merhaba, $isim!";
    }
    
    echo selamla("Ali");
?>

PHP ile Veritabanı İşlemleri

PHP ile backend geliştirme sürecinde en önemli konulardan biri veritabanı entegrasyonudur. PHP, çeşitli veritabanlarıyla kolay entegrasyon sağlar.

MySQL Bağlantısı

<?php
    $sunucu = "localhost";
    $kullanici_adi = "root";
    $sifre = "";
    $veritabani = "blog";
    
    // Bağlantı oluşturma
    $baglanti = new mysqli($sunucu, $kullanici_adi, $sifre, $veritabani);
    
    // Bağlantı kontrolü
    if ($baglanti->connect_error) {
        die("Bağlantı hatası: " . $baglanti->connect_error);
    }
    
    echo "Veritabanına başarıyla bağlandı";
?>

CRUD İşlemleri

Dinamik web sitesi yapımı için CRUD (Create, Read, Update, Delete) işlemleri temel önemdedir:

Veri Ekleme (Create)

<?php
    $sql = "INSERT INTO makaleler (baslik, icerik, yazar) VALUES ('PHP Dersleri', 'PHP ile web geliştirme', 'Ahmet Yılmaz')";
    
    if ($baglanti->query($sql) === TRUE) {
        echo "Yeni kayıt başarıyla oluşturuldu";
    } else {
        echo "Hata: " . $sql . "<br>" . $baglanti->error;
    }
?>

Veri Okuma (Read)

<?php
    $sql = "SELECT id, baslik, icerik, yazar FROM makaleler";
    $sonuc = $baglanti->query($sql);
    
    if ($sonuc->num_rows > 0) {
        while($row = $sonuc->fetch_assoc()) {
            echo "ID: " . $row["id"]. " - Başlık: " . $row["baslik"]. " - Yazar: " . $row["yazar"]. "<br>";
        }
    } else {
        echo "Sonuç bulunamadı";
    }
?>

Veri Güncelleme (Update)

<?php
    $sql = "UPDATE makaleler SET baslik='PHP Dersleri Güncellendi' WHERE id=1";
    
    if ($baglanti->query($sql) === TRUE) {
        echo "Kayıt başarıyla güncellendi";
    } else {
        echo "Hata: " . $baglanti->error;
    }
?>

Veri Silme (Delete)

<?php
    $sql = "DELETE FROM makaleler WHERE id=1";
    
    if ($baglanti->query($sql) === TRUE) {
        echo "Kayıt başarıyla silindi";
    } else {
        echo "Hata: " . $baglanti->error;
    }
?>

PHP Form İşlemleri

Web uygulamalarında kullanıcı etkileşimi genellikle formlar aracılığıyla sağlanır. PHP ile proje geliştirme sürecinde form işlemleri önemli bir yer tutar.

<!DOCTYPE html>
<html>
<head>
    <title>PHP Form Örneği</title>
</head>
<body>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
        <label for="isim">İsim:</label>
        <input type="text" id="isim" name="isim"><br><br>
        
        <label for="email">E-posta:</label>
        <input type="email" id="email" name="email"><br><br>
        
        <input type="submit" value="Gönder">
    </form>
    
    <?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        // Form verileri alınıyor
        $isim = $_POST["isim"];
        $email = $_POST["email"];
        
        // Form verileri doğrulanıyor
        if (empty($isim)) {
            echo "İsim alanı boş bırakılamaz";
        } else {
            echo "Merhaba, $isim! E-posta adresin: $email";
        }
    }
    ?>
</body>
</html>

PHP ile Oturum Yönetimi

Dinamik web uygulamaları geliştirirken oturum yönetimi (session management) önemli bir konudur. PHP'de oturum, kullanıcıya özel verileri geçici olarak saklamak için kullanılır.

<?php
    // Oturum başlatma
    session_start();
    
    // Oturum değişkeni oluşturma
    $_SESSION["kullanici_adi"] = "ahmet123";
    $_SESSION["giris_zamani"] = time();
    
    echo "Oturum başlatıldı!";
?>
<?php
    // Oturumu başlat
    session_start();
    
    // Oturum değişkenlerini kontrol et
    if(isset($_SESSION["kullanici_adi"])) {
        echo "Hoş geldin, " . $_SESSION["kullanici_adi"] . "!<br>";
        echo "Giriş zamanı: " . date("Y-m-d H:i:s", $_SESSION["giris_zamani"]);
    } else {
        echo "Lütfen giriş yapın!";
    }
?>
<?php
    // Oturumu başlat
    session_start();
    
    // Oturum değişkenlerini temizle
    session_unset();
    
    // Oturumu sonlandır
    session_destroy();
    
    echo "Çıkış yapıldı!";
?>

PHP Güvenlik Önlemleri

Web uygulamaları geliştirirken güvenlik, göz ardı edilmemesi gereken bir konudur. PHP best practices takip edilerek güvenli uygulamalar geliştirilebilir.

SQL Injection Önleme

<?php
    // Güvensiz yöntem
    $kullanici_adi = $_POST["kullanici_adi"];
    $sql = "SELECT * FROM kullanicilar WHERE kullanici_adi='$kullanici_adi'";
    
    // Güvenli yöntem (Prepared Statements)
    $stmt = $baglanti->prepare("SELECT * FROM kullanicilar WHERE kullanici_adi=?");
    $stmt->bind_param("s", $kullanici_adi);
    $stmt->execute();
    $sonuc = $stmt->get_result();
?>

XSS Önleme

<?php
    // Güvensiz yöntem
    echo $_POST["yorum"];
    
    // Güvenli yöntem
    echo htmlspecialchars($_POST["yorum"]);
?>

Şifre Güvenliği

<?php
    // Şifre hashleme
    $sifre = "12345";
    $hash = password_hash($sifre, PASSWORD_DEFAULT);
    
    // Şifre doğrulama
    if (password_verify($sifre, $hash)) {
        echo "Şifre doğru!";
    } else {
        echo "Şifre yanlış!";
    }
?>

PHP ile İleri Düzey Konular

Nesne Yönelimli PHP (OOP)

PHP ile backend geliştirme sürecinde OOP (Object-Oriented Programming) yaklaşımı, kodun yeniden kullanılabilirliğini ve organizasyonunu iyileştirir.

<?php
    class Kullanici {
        // Özellikler
        private $isim;
        private $email;
        
        // Yapıcı metot (constructor)
        public function __construct($isim, $email) {
            $this->isim = $isim;
            $this->email = $email;
        }
        
        // Metotlar
        public function getIsim() {
            return $this->isim;
        }
        
        public function getEmail() {
            return $this->email;
        }
        
        public function bilgileriGoster() {
            return "İsim: " . $this->isim . ", E-posta: " . $this->email;
        }
    }
    
    // Sınıfı kullanma
    $kullanici1 = new Kullanici("Ahmet Yılmaz", "[email protected]");
    echo $kullanici1->bilgileriGoster();
?>

PHP Framework Kullanımı

Modern web geliştirmede PHP framework kullanımı yaygındır. Laravel, Symfony, CodeIgniter gibi frameworkler, PHP ile proje geliştirme sürecini hızlandırır ve standartlaştırır.

Laravel Örneği

// routes/web.php
Route::get('/blog', 'BlogController@index');

// app/Http/Controllers/BlogController.php
namespace App\Http\Controllers;

use App\Models\Blog;
use Illuminate\Http\Request;

class BlogController extends Controller
{
    public function index()
    {
        $makaleler = Blog::all();
        return view('blog.index', ['makaleler' => $makaleler]);
    }
}

Composer ile Bağımlılık Yönetimi

composer require monolog/monolog
<?php
    require 'vendor/autoload.php';
    
    use Monolog\Logger;
    use Monolog\Handler\StreamHandler;
    
    // Logger oluştur
    $log = new Logger('uygulama');
    $log->pushHandler(new StreamHandler('logs/uygulama.log', Logger::WARNING));
    
    // Hata kaydet
    $log->warning('Bu bir uyarı mesajıdır');
    $log->error('Bu bir hata mesajıdır');
?>

RESTful API Geliştirme

Dinamik web uygulamaları geliştirirken, mobil uygulamalar veya SPA (Single Page Application) için API geliştirmek önemlidir.

<?php
    header('Content-Type: application/json');
    
    $veritabani = new mysqli("localhost", "root", "", "api_db");
    
    // Ürünleri getir
    if ($_SERVER['REQUEST_METHOD'] === 'GET') {
        $sql = "SELECT * FROM urunler";
        $sonuc = $veritabani->query($sql);
        
        $urunler = [];
        while ($row = $sonuc->fetch_assoc()) {
            $urunler[] = $row;
        }
        
        echo json_encode($urunler);
    }
    
    // Yeni ürün ekle
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $data = json_decode(file_get_contents('php://input'), true);
        
        $ad = $data['ad'];
        $fiyat = $data['fiyat'];
        
        $sql = "INSERT INTO urunler (ad, fiyat) VALUES ('$ad', $fiyat)";
        if ($veritabani->query($sql)) {
            echo json_encode(['mesaj' => 'Ürün başarıyla eklendi', 'id' => $veritabani->insert_id]);
        } else {
            echo json_encode(['hata' => 'Ürün eklenemedi']);
        }
    }
?>

PHP ile Performans Optimizasyonu

PHP best practices içinde performans optimizasyonu önemli bir yer tutar. PHP uygulamalarının hızını artırmak için:

  1. Opcode Önbellekleme: OPcache veya APCu gibi opcode önbellekleme çözümleri kullanın
  2. Veritabanı Optimizasyonu: Veritabanı sorgularını optimize edin ve indeksleri doğru kullanın
  3. CDN Kullanımı: Statik dosyalar için CDN kullanın
  4. Minify ve Sıkıştırma: CSS, JavaScript ve HTML dosyalarını minify edin ve sıkıştırın
  5. Lazy Loading: Gerekli olmayan verileri sadece ihtiyaç duyulduğunda yükleyin

PHP 8 ile Gelen Yenilikler

PHP 8, PHP ile web geliştirme dünyasına pek çok yeni özellik ve geliştirme getirmiştir:

  1. JIT (Just-In-Time) Compiler: Uygulamaların çalışma hızını artırır
  2. Named Arguments: Fonksiyon argümanlarını sırayla değil isimle belirtme imkanı
  3. Union Types: Bir değişkenin birden fazla türde veri içerebileceğini belirtme
  4. Match Expression: Switch ifadesinin daha güçlü bir alternatifi
  5. Constructor Property Promotion: Sınıf özelliklerini constructor içinde tanımlama
<?php
    // PHP 8 Named Arguments
    function kullaniciOlustur($isim, $email, $yas, $sehir) {
        echo "İsim: $isim, E-posta: $email, Yaş: $yas, Şehir: $sehir";
    }
    
    kullaniciOlustur(
        email: "[email protected]",
        yas: 30,
        sehir: "İstanbul",
        isim: "Ahmet Yılmaz"
    );
    
    // PHP 8 Constructor Property Promotion
    class Kullanici {
        public function __construct(
            public string $isim,
            public string $email,
            public int $yas
        ) {}
    }
    
    $kullanici = new Kullanici("Ahmet", "[email protected]", 30);
    echo $kullanici->isim; // "Ahmet"
?>

PHP ile dinamik web siteleri geliştirme süreci, temel bilgilerden ileri düzey tekniklere kadar geniş bir yelpazeyi kapsar. Bu makalede, PHP öğrenme rehberi niteliğinde, temel kavramlardan başlayarak OOP, framework kullanımı, güvenlik önlemleri ve performans optimizasyonu gibi ileri düzey konulara değindik.

PHP, sürekli gelişen yapısı ve geniş topluluk desteği ile web geliştirme dünyasında önemli bir yere sahiptir. PHP ile proje geliştirme sürecinde, öğrendiğiniz bilgileri pratiğe dökmek ve güncel kalmak için PHP'nin resmi dokümantasyonunu takip etmenizi öneririz.

Unutmayın ki PHP best practices takip etmek, güvenli, performanslı ve sürdürülebilir uygulamalar geliştirmenin anahtarıdır. Dinamik web uygulamaları geliştirirken, bu makalede bahsedilen teknikleri uygulayarak, profesyonel düzeyde projeler ortaya çıkarabilirsiniz.

İlgili Etiketler

Çerez Ayarları

Deneyiminizi iyileştirmek için çerezler kullanıyoruz. Daha fazla bilgi için Çerez Politikamızı ziyaret edin.