Neler yeni

Yazılım Forum

Tüm özelliklerimize erişmek için şimdi bize katılın. Kayıt olduktan ve giriş yaptıktan sonra konu oluşturabilecek, mevcut konulara yanıt gönderebilecek, itibar kazanabilecek, özel mesajlaşmaya erişebilecek ve çok daha fazlasını yapabileceksiniz! Bu hizmetlerimiz ise tamamen ücretsiz ve kurallara uyulduğu sürece sınırsızdır, o zaman ne bekliyorsunuz? Hadi, sizde aramıza katılın!

PHP ile Web Geliştirmeye Kapsamlı Başlangıç Rehberi: Temellerden İleriye

Web dünyasının dinamik ve güçlü dillerinden biri olan PHP (Hypertext Preprocessor), yıllardır sunucu taraflı web geliştirmede lider konumda yer almaktadır. Basit bir kişisel web sitesinden karmaşık e-ticaret platformlarına, içerik yönetim sistemlerinden (CMS) sosyal medya uygulamalarına kadar geniş bir yelpazede kullanılabilen PHP, özellikle WordPress, Joomla ve Drupal gibi popüler platformların temelini oluşturur. Bu rehberde, PHP dünyasına adım atmak isteyenler için gerekli tüm temel bilgileri, kurulumdan ileri seviye konulara uzanan bir yol haritasıyla sunacağız. PHP öğrenmek, web geliştirme kariyerinizde size sağlam bir temel ve geniş fırsatlar sunacaktır.

PHP Nedir ve Neden Önemlidir?
PHP, genel amaçlı bir betik dilidir, ancak özellikle web geliştirmeye odaklanmıştır. Bir sunucu tarafı dil olduğu için, kullanıcıların tarayıcılarında çalışan JavaScript gibi istemci tarafı dillerden farklıdır. PHP kodu sunucuda çalışır ve çıktı olarak HTML, CSS veya JSON gibi formatlarda veri üretir. Bu çıktı daha sonra kullanıcının tarayıcısına gönderilir. PHP'nin bu esnek yapısı, onu dinamik web siteleri ve uygulamalar oluşturmak için ideal bir araç haline getirir. Açık kaynak kodlu olması, geniş bir topluluğa sahip olması ve sürekli gelişiyor olması da cabasıdır.

Gereksinimler ve Kurulum
PHP ile kod yazmaya başlamak için bir çalışma ortamına ihtiyacınız var. Bu ortam genellikle şunları içerir:
  • Bir Web Sunucusu: Genellikle Apache veya Nginx kullanılır.
  • Bir Veritabanı: Çoğunlukla MySQL veya MariaDB tercih edilir.
  • PHP Yorumlayıcısı: Kodunuzu çalıştıran ana bileşen.
  • Bir Metin Düzenleyici/IDE: Kodunuzu yazmak için.
Bu bileşenleri tek tek kurmak yerine, XAMPP veya WAMP gibi "hepsi bir arada" paketleri kullanmak, özellikle başlangıç seviyesinde işinizi büyük ölçüde kolaylaştıracaktır. XAMPP (Windows, Apache, MySQL, PHP, Perl) ve WAMP (Windows, Apache, MySQL, PHP) size hazır bir geliştirme ortamı sunar.

https://www.apachefriends.org/tr/index.html adresinden XAMPP'i veya http://www.wampserver.com/en/ adresinden WAMP'ı indirip kurduktan sonra, Apache ve MySQL servislerini başlatmanız gerekecektir. Kodlarınızı yerleştireceğiniz klasör genellikle XAMPP için `htdocs`, WAMP için `www` klasörüdür. Kod düzenleyici olarak Visual Studio Code (https://code.visualstudio.com/), Sublime Text veya PhpStorm gibi araçları kullanabilirsiniz. Özellikle VS Code, geniş eklenti desteği sayesinde PHP geliştirmesi için oldukça popülerdir.

new-php-logo.png


Temel PHP Söz Dizimi
PHP kodları, HTML belgelerinin içine `<?php` ve `?>` etiketleri arasına yazılır. Bu etiketler, sunucuya bu bölgedeki kodun PHP olarak işlenmesi gerektiğini bildirir. En basit PHP kod örneği şöyledir:
Kod:
<?php
echo "Merhaba Dünya!"; // Bu, ekrana "Merhaba Dünya!" yazdırır.
/*
 * Bu çok satırlı bir yorum örneğidir.
 * Yorumlar, kodunuzu açıklamak için kullanılır ve PHP tarafından yürütülmez.
 */
?>
PHP'de her ifadenin sonunda noktalı virgül (;) kullanmak zorunludur. `echo` komutu, ekrana çıktı vermek için kullanılır.

Değişkenler ve Veri Tipleri
PHP'de değişkenler, verileri depolamak için kullanılır ve her zaman bir dolar işareti (`$`) ile başlar. PHP, değişkenin veri türünü otomatik olarak algılar (gevşek tipli bir dildir). Temel veri tipleri şunlardır:
  • String: Metin verileri (örneğin, `$isim = "Ahmet";`).
  • Integer: Tam sayılar (örneğin, `$yas = 30;`).
  • Float (Double): Ondalıklı sayılar (örneğin, `$fiyat = 19.99;`).
  • Boolean: `true` veya `false` değerleri (örneğin, `$aktif = true;`).
  • Array: Birden fazla değeri tek bir değişkende saklamak için (örneğin, `$meyveler = ["Elma", "Armut"];`).
  • Object: Sınıfların örnekleri.
  • NULL: Bir değişkenin hiçbir değere sahip olmadığını gösterir.
  • Resource: Harici kaynaklara bağlantıları temsil eder (örneğin, veritabanı bağlantıları).
Kod:
<?php
$ad = "Mehmet";       // String
$soyad = "Yılmaz";      // String
$yas = 25;            // Integer
$boy = 1.80;          // Float
$medeniHal = true;    // Boolean

echo "Ad: " . $ad . ", Soyad: " . $soyad . ", Yaş: " . $yas . ", Boy: " . $boy . ", Medeni Hal: " . ($medeniHal ? 'Evli' : 'Bekar') . ".";
?>

Operatörler
PHP'de değişkenler üzerinde çeşitli işlemler yapmak için operatörler kullanılır:
  • Aritmetik Operatörler: `+`, `-`, `*`, `/`, `%` (modülüs), `**` (üssü).
  • Atama Operatörleri: `=`, `+=`, `-=`, `*=`, `/=`, `%=`.
  • Karşılaştırma Operatörleri: `==` (eşit mi), `!=` (eşit değil mi), `===` (hem değer hem tip eşit mi), `!==`, `<`, `>`, `<=`, `>=`.
  • Mantıksal Operatörler: `&&` (ve), `||` (veya), `!` (değil).
  • Artırma/Azaltma Operatörleri: `++` (artırma), `--` (azaltma).

Kontrol Yapıları: Karar Verme ve Döngüler
Programlamanın temelini oluşturan kontrol yapıları, kodunuzun akışını yönetmenizi sağlar.

Koşullu İfadeler (if, else, elseif, switch):
Kod:
<?php
$saat = date("H"); // Şu anki saati alır

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

$renk = "mavi";
switch ($renk) {
    case "kırmızı":
        echo "Sevdiğiniz renk kırmızı.";
        break;
    case "mavi":
        echo "Sevdiğiniz renk mavi.";
        break;
    default:
        echo "Favori renk bulunamadı.";
}
?>

Döngüler (while, do-while, for, foreach):
Tekrarlayan görevleri otomatikleştirmek için kullanılırlar.
Kod:
<?php
// For döngüsü
for ($i = 1; $i <= 5; $i++) {
    echo "Sayı: " . $i . "[br]";
}

// While döngüsü
$j = 1;
while ($j <= 3) {
    echo "While döngüsü: " . $j . "[br]";
    $j++;
}

// Foreach döngüsü (diziler için ideal)
$meyveler = ["Elma", "Armut", "Çilek", "Muz"];
echo "[b]En sevdiğim meyveler:[/b][list]";
foreach ($meyveler as $meyve) {
    echo "[*]" . $meyve . "[br]";
}
echo "[/list]";
?>

Fonksiyonlar
Tekrar eden kod bloklarını gruplamak ve yeniden kullanılabilir hale getirmek için fonksiyonlar kullanılır. PHP'de yüzlerce yerleşik fonksiyon bulunur, ancak kendi fonksiyonlarınızı da tanımlayabilirsiniz.
Kod:
<?php
function selamVer($isim) {
    return "Merhaba, " . $isim . "!";
}

echo selamVer("Ayşe"); // Çıktı: Merhaba, Ayşe!
echo selamVer("Deniz"); // Çıktı: Merhaba, Deniz!

function toplama($sayi1, $sayi2) {
    return $sayi1 + $sayi2;
}

$sonuc = toplama(10, 5);
echo "Toplam: " . $sonuc; // Çıktı: Toplam: 15
?>

Diziler (Arrays)
Diziler, tek bir değişkende birden fazla değeri depolamak için kullanılır. PHP'de iki ana dizi türü vardır:
  • Sayısal Diziler: Elemanlara sayısal indekslerle (0'dan başlayarak) erişilir.
  • İlişkisel Diziler: Elemanlara adlandırılmış anahtarlarla erişilir.
Kod:
<?php
// Sayısal Dizi
$arabalar = array("Volvo", "BMW", "Toyota");
echo "İlk araba: " . $arabalar[0] . "[br]"; // Çıktı: İlk araba: Volvo

// İlişkisel Dizi
$yaslar = array("Ali" => "30", "Veli" => "25", "Ayşe" => "28");
echo "Ali'nin yaşı: " . $yaslar['Ali'] . "[br]"; // Çıktı: Ali'nin yaşı: 30
?>

Form İşleme
Web uygulamalarının en kritik kısımlarından biri, kullanıcı girdilerini formlar aracılığıyla almaktır. PHP, `$_GET` ve `$_POST` süperglobal değişkenleri aracılığıyla bu verileri kolayca işleyebilir. `$_GET` verileri URL'de taşırken, `$_POST` verileri HTTP isteğinin gövdesinde taşır ve daha güvenlidir (özellikle hassas veriler için).
Kod:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $kullaniciAdi = $_POST['kullanici_adi'];
    $parola = $_POST['parola'];

    if (empty($kullaniciAdi) || empty($parola)) {
        echo "Lütfen tüm alanları doldurun.";
    } else {
        echo "Merhaba, " . htmlspecialchars($kullaniciAdi) . "! Girişiniz başarılı.";
        // Burada genellikle veritabanı kontrolü ve oturum başlatma yapılır.
    }
} else {
    // Formu göster
    echo '<form method="post" action="' . htmlspecialchars($_SERVER["PHP_SELF"]) . '">
            Kullanıcı Adı: <input type="text" name="kullanici_adi"><br>
            Parola: <input type="password" name="parola"><br>
            <input type="submit" value="Giriş Yap">
          </form>';
}
?>
"Kullanıcıdan gelen her veriye potansiyel bir tehdit olarak yaklaşın ve daima filtreleme, doğrulama ve sanitasyon işlemlerini uygulayın."
Bu, özellikle form işlemede altın kuraldır.

Veritabanı Bağlantısı (PDO ve MySQLi)
Dinamik web uygulamaları genellikle verileri depolamak için veritabanlarına ihtiyaç duyar. PHP, MySQL, PostgreSQL, SQLite gibi birçok veritabanı ile etkileşime geçebilir. En popüler iki yöntem MySQLi (MySQL Improved) ve PDO (PHP Data Objects) uzantılarıdır. PDO, farklı veritabanı sistemlerine tek bir arayüzle bağlanabilme avantajı sunar ve genellikle daha esnek ve güvenli kabul edilir.

Kod:
<?php
$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8mb4';
$username = 'root';
$password = '';

try {
    $pdo = new PDO($dsn, $username, $password);
    // Hata modunu ayarlama: Exception fırlatır
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Veritabanı bağlantısı başarılı![br]";

    // Örnek bir sorgu çalıştırma
    $stmt = $pdo->query("SELECT id, ad FROM kullanicilar");
    echo "[b]Kullanıcı Listesi:[/b][list]";
    while ($row = $stmt->fetch()) {
        echo "[*]ID: " . $row['id'] . ", Ad: " . $row['ad'] . "[br]";
    }
    echo "[/list]";

} catch (PDOException $e) {
    echo "Bağlantı veya sorgu hatası: " . $e->getMessage();
}
?>

Güvenlik Temelleri
PHP ile web uygulaması geliştirirken güvenlik en üst önceliğiniz olmalıdır. Başlıca tehditler ve korunma yolları:
  • SQL Enjeksiyonu: Kullanıcıdan gelen verileri doğrudan SQL sorgularına katmaktan kaçının. Hazırlanmış ifadeler (Prepared Statements) kullanın (PDO ve MySQLi bunu destekler).
  • XSS (Cross-Site Scripting): Kullanıcı girdilerini ekrana basmadan önce `htmlspecialchars()` veya `strip_tags()` gibi fonksiyonlarla temizleyin.
  • CSRF (Cross-Site Request Forgery): Formlara gizli token'lar ekleyerek yetkisiz istekleri engelleyin.
  • Şifre Hashing: Şifreleri asla düz metin olarak saklamayın. `password_hash()` ve `password_ify()` fonksiyonlarını kullanın.
  • Otomatik Kötü Niyetli Yazılım Yüklemeleri: Dosya yükleme işlemlerinde dosya türü, boyutu ve içeriği gibi kontrolleri mutlaka yapın.

Nesne Yönelimli Programlama (OOP) Temelleri
PHP, nesne yönelimli programlamayı (OOP) tam olarak destekler. OOP, karmaşık uygulamaları daha yönetilebilir, modüler ve yeniden kullanılabilir parçalara ayırmanıza yardımcı olur. Sınıflar, nesneler, miras, arayüzler ve trait'ler gibi kavramlar OOP'nin temelini oluşturur. Bir başlangıç rehberinde detaylarına girmek yerine, bu kavramların varlığını bilmek ve ileri seviyede derinlemesine incelemek önemlidir. OOP, büyük ölçekli PHP projelerinde standart yaklaşımdır.

PHP Çerçeveleri (Frameworks)
PHP'nin popülerliği, güçlü ve kapsamlı web geliştirme çerçevelerinin (frameworks) ortaya çıkmasına neden olmuştur. Çerçeveler, sık karşılaşılan görevleri kolaylaştıran (veritabanı etkileşimi, yönlendirme, kimlik doğrulama vb.) hazır bileşenler ve yapılar sunar. Bu, geliştirme sürecini hızlandırır, kod kalitesini artırır ve projenizin bakımını kolaylaştırır. En popüler PHP çerçevelerinden bazıları şunlardır:
  • Laravel: Modern, güçlü ve geniş bir topluluğa sahip en popüler PHP çerçevesi.
  • Symfony: Kurumsal düzeyde uygulamalar için güçlü ve modüler bir çerçeve.
  • CodeIgniter: Hafif, hızlı ve öğrenmesi kolay bir çerçeve.
  • Yii: Yüksek performanslı web uygulamaları geliştirmek için uygun bir çerçeve.
  • Zend Framework (Laminas): Büyük ölçekli kurumsal uygulamalar için tasarlanmış esnek bir yapı.
Başlangıçta çekirdek PHP'yi öğrenmek önemli olsa da, profesyonel projelerde bir çerçeve kullanmak, best practice'leri uygulamanızı ve daha düzenli kod yazmanızı sağlar.

Sonuç ve İleri Adımlar
Bu rehber, PHP dünyasına ilk adımınızı atmanız için kapsamlı bir temel sunmaktadır. Unutmayın ki programlama, sürekli öğrenme ve pratik yapma gerektiren bir alandır. Temel bilgileri edindikten sonra yapmanız gerekenler:
  • Bol Bol Pratik Yapın: Küçük projeler geliştirin, öğrendiklerinizi uygulayın.
  • Hata Ayıklama (Debugging) Yeteneklerinizi Geliştirin: Hataları bulma ve düzeltme becerisi çok önemlidir.
  • Versiyon Kontrol Sistemlerini Öğrenin: Git ve GitHub, kodunuzu yönetmek ve işbirliği yapmak için vazgeçilmezdir.
  • Topluluklara Katılın: Forumlarda, Stack Overflow gibi platformlarda sorular sorun, cevaplar arayın.
  • Bir Çerçeve Öğrenin: Laravel veya Symfony gibi popüler bir çerçeveye odaklanın.
  • Veritabanı Bilginizi Derinleştirin: SQL sorguları ve veritabanı tasarımı hakkında daha fazla bilgi edinin.
  • Güvenlik Konusunda Bilgilenin: Web güvenliği sürekli gelişen bir alandır, güncel kalın.
PHP ile Web Geliştirmeye devam ettikçe, kendinizi sürekli olarak yeni teknolojilerle ve en iyi pratiklerle güncel tutmanız gerekecek. Başarılar dileriz!
 
shape1
shape2
shape3
shape4
shape5
shape6
Üst

Bu web sitenin performansı Hazal Host tarafından sağlanmaktadır.

YazilimForum.com.tr internet sitesi, 5651 sayılı Kanun’un 2. maddesinin 1. fıkrasının (m) bendi ve aynı Kanun’un 5. maddesi kapsamında Yer Sağlayıcı konumundadır. Sitede yer alan içerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır.

YazilimForum.com.tr, kullanıcılar tarafından paylaşılan içeriklerin doğruluğunu, güncelliğini veya hukuka uygunluğunu garanti etmez ve içeriklerin kontrolü veya araştırılması ile yükümlü değildir. Kullanıcılar, paylaştıkları içeriklerden tamamen kendileri sorumludur.

Hukuka aykırı içerikleri fark ettiğinizde lütfen bize bildirin: lydexcoding@gmail.com

Sitemiz, kullanıcıların paylaştığı içerik ve bilgileri 6698 sayılı KVKK kapsamında işlemektedir. Kullanıcılar, kişisel verileriyle ilgili haklarını KVKK Politikası sayfasından inceleyebilir.

Sitede yer alan reklamlar veya üçüncü taraf bağlantılar için YazilimForum.com.tr herhangi bir sorumluluk kabul etmez.

Sitemizi kullanarak Forum Kuralları’nı kabul etmiş sayılırsınız.

DMCA.com Protection Status Copyrighted.com Registered & Protected