
İleri PHP
PHP temellerini, kontrol akışını, işlevlerini, dizilerini, düzenli ifadeleri ve formlarını öğrendikten sonra bir sonraki adım, gerçek uygulamalarda kullanılan gelişmiş PHP özelliklerini anlamaktır.
Bu makalede tarih ve saat, dosya işleme, dosya açma ve okuma, dosya oluşturma ve yazma, file upload, tanımlama bilgileri, oturumlar, filtreler, gelişmiş filtreler, geri çağırma işlevleri, JSON ve istisnalar dahil olmak üzere önemli gelişmiş PHP konuları açıklanmaktadır.
Bu kavramlar, geliştiricilerin dosyaları yönetebilen, kullanıcıları hatırlayabilen, verileri doğrulayabilen, APIs ile bilgi alışverişinde bulunabilen ve hataları doğru şekilde ele alabilen daha pratik uygulamalar oluşturmasına yardımcı olur.
PHP Tarih ve Saat
PHP, tarih ve saatle çalışmak için yerleşik işlevler sağlar. Bloglar, kontrol panelleri, faturalar, raporlar, randevular, günlükler, abonelikler ve kullanıcı etkinliği takibi gibi birçok web uygulamasında tarihler önemlidir.
Tarihleri biçimlendirmek için en yaygın işlevtarih().
<?php
echo date("Y-m-d");
echo date("Y-m-d H:i:s");
?>Biçim dizesi tarihin nasıl görüneceğini kontrol eder. Örneğin,etüm yılı temsil eder,mayı temsil ederdgünü temsil ederHsaati temsil eder,bendakikayı temsil eder vessaniyeyi temsil eder.
Saat dilimini kullanarak da ayarlayabilirsiniz.date_default_timezone_set().
<?php
date_default_timezone_set("Europe/Istanbul");
echo date("Y-m-d H:i:s");
?>PHP ayrıca şunları sağlar:TarihSaatModern uygulamalar için daha esnek olan sınıf.
<?php
$date = new DateTime();
echo $date->format("Y-m-d H:i:s");
?>DateTime sınıfı, günleri eklerken, tarihleri karşılaştırırken, saat dilimlerini işlerken ve doğru zaman hesaplamalarına bağlı uygulamalar oluştururken kullanışlıdır.
PHP Dahil Et
dahil etmekifadesi, bir PHP dosyasını başka bir PHP dosyasının içine eklemenizi sağlar. Bu, geliştiricilerin kodu düzenlemesine ve aynı HTML veya PHP mantığının birçok dosyada tekrarlanmasını önlemesine yardımcı olur.
Örneğin, bir web sitesinde paylaşılan bir üstbilgi ve altbilgi bulunabilir. Başlığı her sayfaya kopyalamak yerine ekleyebilirsiniz.
<?php include "header.php"; ?>
<h1>Home Page</h1>
<?php include "footer.php"; ?>PHP ayrıca şunları sağlar:gerektirir,include_onceverequire_once.
şunları içerir:bir dosya içerir ve dosya eksikse bir uyarı gösterir.
gerektirir:bir dosya içerir ve dosya eksikse komut dosyasını durdurur.
include_once:bir dosyayı yalnızca bir kez içerir.
require_once:bir dosyayı yalnızca bir kez gerektirir.
Gerçek projelerde, include ve require genellikle yapılandırma dosyaları, paylaşılan düzenler, yardımcı işlevler, veritabanı bağlantıları ve yeniden kullanılabilir bileşenler için kullanılır.
PHP Dosya İşleme
Dosya işleme, PHP aracılığıyla dosyalarla çalışmak anlamına gelir. PHP dosyaları okuyabilir, dosya yazabilir, dosya oluşturabilir, dosya yükleyebilir, dosyaları silebilir ve dosyaların var olup olmadığını kontrol edebilir.
Dosya işleme, günlükler, raporlar, basit depolama, yapılandırma dosyaları, yüklenen belgeler, oluşturulan dışa aktarımlar ve geçici dosyalar için kullanışlıdır.
Bir dosyayla çalışmaya başlamadan önce dosyanın var olup olmadığını kontrol etmek önemlidir.
<?php
$file = "example.txt";
if (file_exists($file)) {
echo "File exists.";
} else {
echo "File does not exist.";
}
?>PHP gibi birçok dosya işlevi sağlarfile_exists(),dosya boyutu(),file_get_contents(),file_put_contents(),fopen(),fread(),fwrite()vefclose().
Dosyalarla çalışırken geliştiricilerin her zaman izinlere, dosya yollarına, güvenliğe ve kullanıcı girişine dikkat etmesi gerekir. Kullanıcıların doğrulama olmadan dosya yollarını özgürce kontrol etmesine asla izin vermeyin.
PHP Dosya Açma/Okuma
PHP aşağıdaki gibi işlevleri kullanarak dosyaları açabilir ve okuyabilir:fopen(),fread()vefclose().fopen()işlev bir dosyayı açarkenfread()içeriğini okur.
<?php
$file = fopen("example.txt", "r");
$content = fread($file, filesize("example.txt"));
fclose($file);
echo $content;
?>İkinci argümanfopen()moddur. Modrsalt okunur anlamına gelir.
Tam bir dosyayı okumanın daha basit bir yolu kullanmaktırfile_get_contents().
<?php
$content = file_get_contents("example.txt");
echo $content;
?>Dosyanın tamamını bir kerede okumak istediğinizde bu yöntem daha kısa ve kullanışlıdır.
Büyük dosyalar için satır satır okumak daha iyi olabilir çünkü daha az bellek kullanır.
<?php
$file = fopen("example.txt", "r");
while (!feof($file)) {
echo fgets($file);
}
fclose($file);
?>Dosyaları okumak genellikle günlükler, metin dosyaları, CSV dosyaları, şablonlar, önbelleğe alınmış içerik ve içe aktarılan veriler için kullanılır.
PHP Dosya Oluşturma/Yazma
PHP aşağıdaki gibi işlevleri kullanarak dosyalar oluşturabilir ve yazabilir:fopen(),fwrite()vefile_put_contents().
Aşağıdaki örnek bir dosya oluşturur veya açar ve içine metin yazar.
<?php
$file = fopen("notes.txt", "w");
fwrite($file, "Learning PHP file writing.");
fclose($file);
?>Modwdosyayı yazmak için açar. Dosya mevcut değilse PHP onu oluşturmaya çalışır. Dosya zaten mevcutsa eski içeriği kaldırılacaktır.
Bir dosyanın sonuna yeni içerik eklemek içinbirmodu.
<?php
$file = fopen("notes.txt", "a");
fwrite($file, "\nNew line added.");
fclose($file);
?>Ayrıca kullanabilirsinizfile_put_contents()daha kısa bir sözdizimi için.
<?php
file_put_contents("notes.txt", "Hello from PHP.");
?>Kullanarak içerik eklemek içinfile_put_contents(), şunu kullanFILE_APPENDbayrak.
<?php
file_put_contents("notes.txt", "\nAnother line.", FILE_APPEND);
?>Dosya yazmak, günlükler, oluşturulan raporlar, önbellek dosyaları, dışa aktarılan veriler ve basit dosya tabanlı depolama için kullanışlıdır.
PHP File Upload
Dosya yükleme, kullanıcıların bilgisayarlarından sunucuya dosya göndermesine olanak tanır. Bu, profil görsellerinde, özgeçmişlerde, belgelerde, galerilerde, eklerde ve yönetici panellerinde kullanılır.
Dosyaları yüklemek için HTML formunun kullanılması gerekiryöntem = "gönder"veenctype = "çok parçalı/form-veri".
<form method="post" enctype="multipart/form-data">
<input type="file" name="document">
<button type="submit">Upload</button>
</form>PHP’de, yüklenen dosya bilgilerine şu adresten ulaşılabilir:$_FILESsüper küresel.
<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$fileName = $_FILES["document"]["name"];
$tmpName = $_FILES["document"]["tmp_name"];
move_uploaded_file($tmpName, "uploads/" . $fileName);
echo "File uploaded.";
}
?>Bu temel örnek işe yarar ancak gerçek file upload sistemlerinin daha güçlü bir doğrulamaya ihtiyacı vardır. Geliştiriciler dosya boyutunu, dosya uzantısını, MIME türünü kontrol etmeli, yükleme hatalarını kontrol etmeli ve güvenli dosya adları oluşturmalıdır.
<?php
$allowedExtensions = ["jpg", "png", "pdf"];
$fileName = $_FILES["document"]["name"];
$tmpName = $_FILES["document"]["tmp_name"];
$fileSize = $_FILES["document"]["size"];
$extension = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
if (!in_array($extension, $allowedExtensions)) {
echo "File type is not allowed.";
} elseif ($fileSize > 2 * 1024 * 1024) {
echo "File is too large.";
} else {
$newName = uniqid("upload_", true) . "." . $extension;
move_uploaded_file($tmpName, "uploads/" . $newName);
echo "File uploaded successfully.";
}
?>Güvenli olmayan yükleme sistemleri ciddi güvenlik sorunları yaratabileceğinden dosya yükleme işlemleri dikkatli bir şekilde gerçekleştirilmelidir.
PHP Çerezleri
Çerezler kullanıcının tarayıcısında saklanan küçük veri parçalarıdır. PHP çerezler oluşturabilir ve daha sonraki isteklerde bunları okuyabilir.
Çerezler genellikle tercihleri, dil seçimini, basit izleme değerlerini ve hassas olmayan kullanıcı ayarlarını hatırlamak için kullanılır.
Bir çerez kullanılarak oluşturulabilirçerez ayarla().
<?php
setcookie("theme", "dark", time() + 3600, "/");
?>Bu, adında bir çerez oluştururtemadeğer ilekaranlık. Çerezin süresi bir saat sonra dolacaktır.
Çerezler kullanılarak okunabilir.$_COOKIEsüper küresel.
<?php
$theme = $_COOKIE["theme"] ?? "light";
echo $theme;
?>Bir çerezi silmek için son kullanma tarihini geçmiş bir zamana ayarlayın.
<?php
setcookie("theme", "", time() - 3600, "/");
?>Çerezler, şifreler gibi hassas bilgileri saklamak için kullanılmamalıdır. Hassas kimlik doğrulama verileri, oturumlar, belirteçler ve uygun güvenlik uygulamaları kullanılarak güvenli bir şekilde kullanılmalıdır.
PHP Oturumları
Oturumlar, PHP’nin belirli bir kullanıcıya ait verileri birden çok sayfada depolamasına olanak tanır. Çerezlerden farklı olarak oturum verileri sunucuda depolanırken, tarayıcı genellikle yalnızca bir oturum tanımlayıcısını saklar.
Oturumlar genellikle oturum açma sistemleri, alışveriş sepetleri, kullanıcı kontrol panelleri, hızlı mesajlar ve geçici kullanıcı verileri için kullanılır.
Oturumları kullanmak için oturumu şununla başlatın:oturum_başlangıcı().
<?php
session_start();
$_SESSION["user_id"] = 15;
$_SESSION["user_name"] = "Adnan";
echo $_SESSION["user_name"];
?>Başka bir sayfada oturumu tekrar başlatabilir ve saklanan değerlere erişebilirsiniz.
<?php
session_start();
if (isset($_SESSION["user_id"])) {
echo "User is logged in.";
} else {
echo "User is not logged in.";
}
?>Bir oturum değerini kaldırmak için şunu kullanın:ayarı kaldır().
<?php
session_start();
unset($_SESSION["user_id"]);
?>Tüm oturumu yok etmek için şunu kullanın:session_destroy().
<?php
session_start();
session_destroy();
?>Oturumlar, istekler arasında kullanıcıları güvenli bir şekilde hatırlaması gereken uygulamalar için çok önemlidir.
PHP Filtreler
PHP filtreleri verileri doğrulamak ve sterilize etmek için kullanılır. Doğrulama, verilerin geçerli olup olmadığını kontrol ederken temizleme işlemi verileri temizler veya değiştirir.
Filtrelerin ana işlevifiltre_var().
<?php
$email = "user@example.com";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Valid email.";
} else {
echo "Invalid email.";
}
?>PHP filtreleri e-postaları, URL'leri, tam sayıları, değişkenleri, IP adreslerini ve boolean'ları doğrulayabilir.
<?php
$url = "https://example.com";
if (filter_var($url, FILTER_VALIDATE_URL)) {
echo "Valid URL.";
}
?>Filtreler genellikle form girişi, API girişi, sorgu parametreleri ve yapılandırma değerleriyle birlikte kullanılır.
PHP Filtreler Gelişmiş
Gelişmiş filtreleme, geliştiricilerin daha spesifik doğrulama kuralları için seçenekleri ve bayrakları kullanmasına olanak tanır.
Örneğin, belirli bir aralıktaki bir tam sayıyı doğrulayabilirsiniz.
<?php
$age = 25;
$options = [
"options" => [
"min_range" => 18,
"max_range" => 60
]
];
if (filter_var($age, FILTER_VALIDATE_INT, $options)) {
echo "Age is valid.";
} else {
echo "Age is not valid.";
}
?>Ayrıca bir IP adresini de doğrulayabilirsiniz.
<?php
$ip = "192.168.1.1";
if (filter_var($ip, FILTER_VALIDATE_IP)) {
echo "Valid IP address.";
}
?>Giriş değerleri dizileri için PHP şunları sağlar:filtre_input()vefilter_input_array()doğrudan istek verileriyle çalışırken kullanışlıdır.
<?php
$email = filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL);
if ($email) {
echo "Valid email from POST.";
}
?>Gelişmiş filtreler, geliştiricilerin daha katı doğrulama kuralları oluşturmasına ve uygulamalardaki yanlış veya güvenli olmayan girişleri azaltmasına yardımcı olur.
PHP Geri Çağırma İşlevleri
Geri çağırma işlevi, başka bir işleve argüman olarak iletilen bir işlevdir. PHP daha sonra ihtiyaç duyulduğunda bu işlevi çağırabilir.
Geri aramalar, dizileri sıralamak, filtrelemek, verileri dönüştürmek, olay stili mantığı ve esnek yeniden kullanılabilir kod için kullanışlıdır.
Basit bir geri arama örneği şunları kullanabilir:dizi_map().
<?php
$numbers = [1, 2, 3, 4];
$result = array_map(function ($number) {
return $number * 2;
}, $numbers);
print_r($result);
?>Bu örnek, anonim bir işlevi geri arama olarak gönderir.dizi_map(). Fonksiyon dizideki her öğeye uygulanır.
Başka bir yaygın geri arama örneği şunu kullanır:dizi_filtre().
<?php
$numbers = [1, 2, 3, 4, 5, 6];
$evenNumbers = array_filter($numbers, function ($number) {
return $number % 2 === 0;
});
print_r($evenNumbers);
?>Adlandırılmış işlevler aynı zamanda geri arama olarak da kullanılabilir.
<?php
function makeUppercase($value) {
return strtoupper($value);
}
$names = ["php", "laravel", "symfony"];
$result = array_map("makeUppercase", $names);
print_r($result);
?>Geri çağırma işlevleri modern PHP’de önemlidir çünkü kodun daha esnek ve anlamlı olmasına yardımcı olurlar.
PHP JSON
JSON, JavaScript Nesne Gösterimi anlamına gelir. Uygulamalar, APIs, ön uçlar, arka uçlar, mobil uygulamalar ve harici hizmetler arasında bilgi alışverişinde bulunmak için kullanılan yaygın bir veri formatıdır.
PHP şunları sağlarjson_encode()PHP dizilerini veya nesnelerini JSON'ya dönüştürmek için.
<?php
$user = [
"name" => "Adnan",
"role" => "Developer",
"active" => true
];
$json = json_encode($user);
echo $json;
?>Çıktı, bir ön uca veya API istemcisine gönderilebilecek bir JSON dizesi olacaktır.
PHP ayrıca şunları sağlar:json_decode()JSON’ı tekrar PHP verilerine dönüştürmek için.
<?php
$json = '{"name":"Adnan","role":"Developer"}';
$data = json_decode($json, true);
echo $data["name"];
?>İkinci argümandoğruPHP'ya JSON nesnesini ilişkisel bir diziye dönüştürmesini söyler.
JSON, REST APIs, AJAX isteklerinde, yapılandırma dosyalarında, harici entegrasyonlarda ve modern web uygulamalarında yoğun olarak kullanılır.
JSON ile çalışırken hataları kontrol etmek yararlı olacaktır.json_last_error()veyajson_last_error_msg().
<?php
$json = '{"name": "Adnan"';
$data = json_decode($json, true);
if (json_last_error() !== JSON_ERROR_NONE) {
echo json_last_error_msg();
}
?>PHP İstisnalar
Hataları kontrollü bir şekilde ele almak için istisnalar kullanılır. PHP, bir hatanın uygulamayı beklenmedik şekilde bozmasına izin vermek yerine bir istisna atabilir ve onu yakalayabilir.
Temel yapı kullanırdenemek,yakalamakve bazennihayet.
<?php
try {
throw new Exception("Something went wrong.");
} catch (Exception $exception) {
echo $exception->getMessage();
}
?>İçindeki koddenemekİlk önce blok yürütülür. Bir istisna atılırsa PHP şuraya taşınır:yakalamakBlok.
nihayetBlock, bir istisna olsa da olmasa da çalışır.
<?php
try {
echo "Trying to process data.";
} catch (Exception $exception) {
echo $exception->getMessage();
} finally {
echo "Process finished.";
}
?>Veritabanları, APIs, dosyalar, ödemeler, kimlik doğrulama ve başarısız olabilecek herhangi bir işlemle çalışırken istisnalar faydalıdır.
Daha iyi hata ayıklama ve daha temiz hata işleme için özel istisna mesajları da oluşturabilirsiniz.
<?php
function divide($a, $b) {
if ($b === 0) {
throw new Exception("Division by zero is not allowed.");
}
return $a / $b;
}
try {
echo divide(10, 0);
} catch (Exception $exception) {
echo "Error: " . $exception->getMessage();
}
?>İyi istisna yönetimi, uygulamaları daha kararlı hale getirir ve hata ayıklamayı kolaylaştırır.
Bu Gelişmiş PHP Konuları Birlikte Nasıl Çalışır?
Gerçek PHP projelerinde bu ileri düzey konular sıklıkla birlikte kullanılır. Örneğin, bir kullanıcı profili sistemi oturum açma durumunu kontrol etmek için oturumları, profil resmini yüklemek için dosya yüklemelerini, girişi doğrulamak için filtreleri, API yanıtlarını döndürmek için JSON’ı ve hataları işlemek için istisnaları kullanabilir.
Basit bir API yanıtı doğrulamayı, JSON’ı ve istisnaları birleştirebilir.
<?php
header("Content-Type: application/json");
try {
$email = $_POST["email"] ?? "";
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
throw new Exception("Invalid email address.");
}
echo json_encode([
"success" => true,
"message" => "Email is valid."
]);
} catch (Exception $exception) {
echo json_encode([
"success" => false,
"message" => $exception->getMessage()
]);
}
?>Bu örnekte, bir API veya AJAX isteğinde kullanılabilecek basit bir yanıt yapısı oluşturmak için form girişi, filtreler, özel durumlar ve JSON kullanılır.
Gelişmiş PHP için Güvenlik Notları
Gelişmiş PHP özellikleri güçlüdür ancak dikkatli kullanılmalıdır. Dosya işleme, yüklemeler, çerezler, oturumlar ve kullanıcı girişi, düzgün şekilde yönetilmedikleri takdirde güvenlik riskleri oluşturabilir.
Önemli güvenlik uygulamaları şunları içerir:
Tüm kullanıcı girişlerini doğrulayın ve sterilize edin.
Yüklenen dosyalar için güvenli dosya adları kullanın.
İzin verilen yükleme uzantılarını ve dosya boyutlarını kısıtlayın.
Hassas verileri doğrudan çerezlerde saklamayın.
Kimlik doğrulamayla ilgili veriler için oturumları güvenli bir şekilde kullanın.
Kullanıcı verilerini görüntülemeden önce çıktıdan çıkın.
Hassas sunucu ayrıntılarını açığa çıkarmadan istisnaları ele alın.
Dosyalar ve yükleme dizinleri için uygun izinleri kullanın.
Profesyonel uygulamalarda Laravel gibi çerçeveler doğrulama, dosya depolama, oturumlar, tanımlama bilgileri, JSON yanıtları ve istisna yönetimi için yerleşik araçlar sağlar. Ancak bu PHP kavramlarını doğrudan anlamak önemlidir çünkü bu, çerçevenin perde arkasında nasıl çalıştığını açıklar.
Sonuç
Tarih ve saat, dosya işleme, dosya açma ve okuma, dosya oluşturma ve yazma, file upload, tanımlama bilgileri, oturumlar, filtreler, gelişmiş filtreler, geri çağırma işlevleri, JSON ve istisnalar gibi gelişmiş PHP konuları, gerçek web uygulamaları oluşturmak için gereklidir.
Bu özellikler geliştiricilerin dosyaları yönetmesine, verileri doğrulamasına, kullanıcıları hatırlamasına, APIs ile bilgi alışverişinde bulunmasına ve hataları yapılandırılmış bir şekilde ele almasına yardımcı olur.
Bu kavramları öğrendikten sonra bir sonraki adım, iletişim formu, file upload sistemi, oturum açma sistemi, JSON API ve basit kontrol paneli gibi küçük projeler oluşturarak pratik yapmaktır. Bu projeler PHP’nin temellerini gerçek geliştirme deneyimiyle birleştirecek.

