PHP’de değişkenler, verileri saklamak ve işlemek için kullanılan temel yapı taşlarıdır. Bu yazıda PHP değişkenleri ile ilgili her yönü detaylı bir şekilde ele alacağız.
Temeller: PHP’de Değişken Tanımlama
PHP’de değişkenler $ (dolar) işareti ile tanımlanır ve bir değer alır.
Değişken Tanımlama Kuralları:
- ✅ $degiskenAdi = “Merhaba PHP”; → Geçerli
- ❌ $1degisken = 10; → Geçersiz (Rakam ile başlayamaz)
- ❌ $degisken-adi = “Hata”; → Geçersiz (Sadece _ kullanılabilir, – değil)
<?php
$isim = "Ahmet";
$yas = 25;
$pi = 3.14;
$aktifMi = true;
echo "İsim: $isim, Yaş: $yas, Pi: $pi, Aktif mi? " . ($aktifMi ? "Evet" : "Hayır");
?>
PHP, dinamik türleme özelliği sayesinde değişken türlerini otomatik olarak belirler:
<?php
$degisken = 10; // int
$degisken = "PHP"; // string (Tür değiştirme mümkündür)
?>
Süper Küreseller: Öntanımlı Değişkenler
PHP, her yerden erişilebilen bazı süper küresel değişkenler içerir. Bunlar, genellikle kullanıcı girdileri, sunucu bilgileri veya oturum yönetimi gibi amaçlarla kullanılır.
Süper Küresel Değişken | Açıklama |
$_GET | URL parametrelerini içerir. |
$_POST | Form verilerini içerir. |
$_REQUEST | Hem $_GET hem $_POST verilerini alır. |
$_SESSION | Kullanıcı oturum verilerini saklar. |
$_COOKIE | Kullanıcı tarayıcısında saklanan verileri içerir. |
$_FILES | Dosya yükleme işlemlerini yönetir. |
$_SERVER | Sunucu ve istek bilgilerini içerir. |
<?php
echo "Kullanıcının IP adresi: " . $_SERVER['REMOTE_ADDR'];
?>
Scope: Değişken Etki Alanı
PHP’de değişkenlerin etki alanı (scope), nereden erişilebileceğini belirler. Yerel, küresel ve statik adı altında 3 tip ana değişken kapsamı bulunmaktadır.
Yerel (Local) Değişkenler
Bir fonksiyon içinde tanımlanan değişkenler sadece o fonksiyon içinde kullanılabilir:
<?php
function ornek() {
$lokalDegisken = "Bu sadece fonksiyon içinde geçerli";
echo $lokalDegisken;
}
ornek();
// echo $lokalDegisken; // Hata: Değişken bulunamadı!
?>
Global (Küresel) Değişkenler
Bir fonksiyon dışındaki değişkenlere fonksiyon içinden global anahtar kelimesi ile erişilebilir:
<?php
$globalDegisken = "Ben her yerde varım!";
function goster() {
global $globalDegisken;
echo $globalDegisken;
}
goster(); // Çıktı: Ben her yerde varım!
?>
Statik (Static) Değişkenler
Fonksiyon her çağrıldığında değerini koruması için static kullanılır:
<?php
function sayac() {
static $sayi = 0;
$sayi++;
echo "Sayac: $sayi<br>";
}
sayac(); // 1
sayac(); // 2
sayac(); // 3
?>
Dinamik Değişkenler: Veri Türü Belirtilmeyenler
PHP’de değişken isimleri dinamik olarak atanabilir. Bir değişkenin içeriği başka bir değişken adı olarak kullanılabilir.
<?php
$degiskenAdi = "isim";
$$degiskenAdi = "Ahmet"; // $isim = "Ahmet";
echo $isim; // Çıktı: Ahmet
?>
Bu özellik, dinamik veri işleme ve meta programlama için oldukça kullanışlıdır. Ancak, fazla kullanımı okunabilirliği düşürebilir!
Dış Kaynaklı Değişkenler
PHP’de dış kaynaklardan gelen verileri güvenli bir şekilde işlemek önemlidir. Kullanıcı girdileri, formlar, API çağrıları ve veritabanı sorguları gibi farklı kaynaklardan gelebilir.
En Yaygın Dış Kaynaklar:
- Form verileri: $_POST, $_GET
- Çerezler (Cookies): $_COOKIE
- Oturum değişkenleri: $_SESSION
- Dosya yüklemeleri: $_FILES
- Sunucu bilgileri: $_SERVER
Güvenlik Önlemleri:
- SQL Enjeksiyonuna Karşı: mysqli_real_escape_string() veya PDO::prepare() kullanın.
- XSS Saldırılarına Karşı: htmlspecialchars() ile verileri filtreleyin.
- Boş veya Geçersiz Değerlere Karşı: isset() ve empty() kontrollerini ekleyin.
<?php
if (isset($_GET['ad'])) {
$ad = htmlspecialchars($_GET['ad']); // XSS koruması
echo "Merhaba, $ad!";
} else {
echo "Lütfen adınızı girin.";
}
?>
Bölüm Sonu Canavarı: PHP Değişken Testi
Bu bölüme kadar PHP’de değişkenler ile ilgili birçok temel ve ileri seviye konuyu öğrendik. Şimdi öğrendiklerini pekiştirmek için bazı görevleri tamamlamaya hazır mısın?
📌 Görev: Aşağıdaki değişken tanımlamalarından hangileri hatalıdır? Neden?
$ad = "Ali";
$1yas = 25;
$soy-ad = "Yılmaz";
$_dogum_yili = 1998;
💡 İpucu: Değişken isimlendirme kurallarını gözden geçir!
📌 Görev: Bir kullanıcıdan gelen form verisini $_POST süper küresel değişkeni ile al ve güvenli bir şekilde ekrana yazdır.
💡 İpucu: Kullanıcıdan gelen verileri XSS saldırılarına karşı korumayı unutma!
📌 Görev: Aşağıdaki kod bloğunda global anahtar kelimesi kullanılmazsa ne olur? Kodun çıktısını tahmin et!
$mesaj = "Merhaba Dünya!";
function yazdir() {
echo $mesaj;
}
yazdir();
💡 İpucu: Fonksiyon içinde global değişkenlere erişmek için ne yapman gerektiğini hatırla!
📌 Görev: Aşağıdaki kodun çıktısını tahmin et ve nedenini açıkla:
$degiskenAdi = "sehir";
$$degiskenAdi = "İstanbul";
echo $sehir;
💡 İpucu: Değişken değişkenler kavramını tekrar gözden geçir!