Dijital dünyanın temel taşlarından biri olan PHP, 2025 yılında hala web geliştirmenin vazgeçilmez bir parçası. Sunucu tarafı scripting dillerinin öncüsü olarak bilinen bu dil, milyonlarca web sitesini güçlendiriyor. İlk olarak Rasmus Lerdorf tarafından 1994’te geliştirilen PHP, Personal Home Page anlamına geliyordu; ancak zamanla Hypertext Preprocessor olarak evrildi. 2025’te PHP 8.4 sürümüyle, performans ve güvenlik iyileştirmeleriyle öne çıkıyor. Bu rehberde, PHP’nin tarihini ve evrimini, sunucu tarafı scripting özelliklerini, değişkenler, fonksiyonlar ve nesneler gibi temel kavramları, veritabanı entegrasyonunu (MySQL/PDO), popüler framework’leri (Laravel, Symfony), güvenlik pratiklerini, performans optimizasyon tekniklerini ve WordPress gibi CMS’lerde kullanımını derinlemesine inceleyeceğiz. Bolca kod örneği ve adım adım bir tutorial ile, PHP’yi projelerinizde ustalıkla kullanmak için ihtiyacınız olan her şeyi bulacaksınız. Kaliteweb gibi hosting sağlayıcılarıyla PHP uygulamalarınızı barındırarak, hızlı ve güvenli web siteleri oluşturabilirsiniz. Hazırsanız, PHP’nin büyülü dünyasına dalalım!
PHP’nin Tarihi ve Evrimi: Bir Dilin Dönüşümü
PHP’nin yolculuğu, 1994’te Rasmus Lerdorf’un kişisel web sayfalarını yönetmek için yazdığı bir araç setiyle başladı. O zamanlar C dilinde yazılmış basit bir script motoruydu. 1995’te PHP/FI (Forms Interpreter) olarak halka açıldı ve veritabanı entegrasyonu eklendi. 1998’de PHP 3 ile büyük bir sıçrama yaptı; Zend Engine’in temelleri atıldı. 2000’de PHP 4, nesne yönelimli programlamayı (OOP) getirdi. 2004’teki PHP 5, tam OOP desteği ve PDO (PHP Data Objects) ile modernleşti. 2015’te PHP 7, performansını %100 artırdı ve tip bildirimleri ekledi. 2020’de PHP 8, JIT derleyici ve attributes ile hızlandı. 2025’te PHP 8.4, fiber’lar (hafif eşzamanlılık) ve gelişmiş hata yönetimiyle evrildi.
PHP’nin evrimi, web teknolojilerinin değişimine paralel ilerledi. Başlangıçta statik sayfalar için kullanılırken, bugün dinamik API’ler, CMS’ler ve mikro hizmetler için vazgeçilmez. Örnek: WordPress’in %80’i PHP ile yazıldı, milyonlarca siteyi güçlendiriyor. Datatelekom’un yüksek performanslı sunucularında, PHP 8.4 sürümüyle uygulamalar %30 daha hızlı çalışıyor.
Sunucu Tarafı Scripting: PHP’nin Gücü
PHP, sunucu tarafı scripting dillerinin kralıdır. Tarayıcı isteklerini sunucuda işler ve HTML/CSS/JS olarak yanıt verir. Bu, dinamik içerik üretmeyi sağlar – örneğin, kullanıcı girişine göre sayfa kişiselleştirme.
Sunucu tarafı scripting’in avantajları:
-
Dinamik İçerik: Kullanıcı verilerine göre sayfalar oluşturun.
-
Güvenlik: Veritabanı şifreleri sunucuda kalır, istemciye gitmez.
-
Performans: Sunucu kaynaklarını verimli kullanır.
Örnek Kod: Basit bir dinamik sayfa:
<?php
$greeting = 'Merhaba, Dünya!';
echo "<h1>$greeting</h1>";
?>
Bu kod, sunucuda işlenir ve HTML olarak gönderilir. Örnek: Bir blog, PHP ile veritabanından makaleleri çeker ve dinamik listeler.
Değişkenler, Fonksiyonlar ve Nesneler: PHP’nin Temelleri
PHP’de değişkenler, veri saklama için kullanılır. Tip bildirimi isteğe bağlıdır (dinamik tip sistemi).
Değişkenler:
$name = 'Ali'; // String
$age = 30; // Integer
$price = 99.99; // Float
$isAdmin = true; // Boolean
$colors = ['kırmızı', 'mavi']; // Array
Fonksiyonlar:
function add($a, $b) {
return $a + $b;
}
echo add(5, 3); // 8
Gelişmiş: Tip bildirimi:
function add(int $a, int $b): int {
return $a + $b;
}
Nesneler (OOP):
class User {
public $name;
private $age;
public function __construct(string $name, int $age) {
$this->name = $name;
$this->age = $age;
}
public function getAge(): int {
return $this->age;
}
}
$user = new User('Ali', 30);
echo $user->name; // Ali
echo $user->getAge(); // 30
Örnek: Bir e-ticaret sitesi, OOP ile ürün nesneleri yönetir, değişkenlerle stok tutar. Fonksiyonlarla fiyat hesaplar.
Veritabanı Entegrasyonu: MySQL ve PDO
PHP, veritabanlarıyla kusursuz entegre olur. MySQL, en yaygın seçim; PDO, güvenli bağlantı sağlar.
MySQL Bağlantısı:
$conn = mysqli_connect('localhost', 'user', 'password', 'database');
if (!$conn) {
die('Bağlantı hatası: ' . mysqli_connect_error());
}
Sorgu:
$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($result)) {
echo $row['name'] . '<br>';
}
mysqli_close($conn);
PDO ile Güvenli Entegrasyon:
try {
$pdo = new PDO('mysql:host=localhost;dbname=database', 'user', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die('Bağlantı hatası: ' . $e->getMessage());
}
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');
$stmt->execute(['id' => 1]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo $row['name'];
Örnek: Bir CMS, PDO ile kullanıcı girişini güvenli işler, SQL injection’ı önler.
Framework’ler: Laravel ve Symfony
PHP framework’leri, geliştirme sürecini hızlandırır. Laravel ve Symfony, 2025’te en popülerler.
Laravel:
-
MVC mimarisi, Eloquent ORM, Artisan CLI.
-
Örnek: Route tanımlama:
Route::get('/hello', function () {
return 'Merhaba Laravel!';
});
- Avantaj: Hızlı geliştirme, Blade templating.
Symfony:
-
Bileşen tabanlı, esnek.
-
Örnek: Controller:
class HelloController extends AbstractController {
#[Route('/hello', name: 'hello')]
public function index(): Response {
return $this->render('hello/index.html.twig', ['name' => 'Symfony']);
}
}
- Avantaj: Yüksek ölçeklenebilirlik, Twig templating.
Örnek: Bir API, Laravel ile geliştirildi, %40 daha hızlı prototipleme sağladı.
Güvenlik Pratikleri: PHP Uygulamalarınızı Koruyun
PHP’de güvenlik, kritik. 2025 pratikleri:
-
SQL Injection Önleme: PDO veya prepared statements kullanın.
-
XSS Koruma:
htmlspecialchars()
ile kullanıcı girdilerini filtreleyin:
echo htmlspecialchars($userInput, ENT_QUOTES);
- CSRF Koruma: Token’lar ekleyin:
session_start();
$csrfToken = bin2hex(random_bytes(32));
$_SESSION['csrf_token'] = $csrfToken;
Formda:
<input type="hidden" name="csrf_token" value="<?php echo $csrfToken; ?>">
- Şifreleme: Argon2 ile şifre hash’leyin:
$hash = password_hash($password, PASSWORD_ARGON2ID);
- Dosya Yükleme Güvenliği: MIME tipi kontrolü:
if ($_FILES['file']['type'] == 'image/jpeg') {
// Yükle
}
- HTTPS Zorlama: .htaccess ile:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Örnek: Bir form, CSRF token’ıyla güvenlendi, brute force saldırıları %90 azaldı.
Performans Optimizasyonu: PHP’yi Hızlandırın
PHP performansı, optimizasyonla %50 artırılabilir. 2025 teknikleri:
- Opcode Caching: OPcache etkinleştirin:
opcache.enable=1
opcache.memory_consumption=128
- Sorgu Optimizasyonu: Index ekleyin:
CREATE INDEX idx_name ON users(name);
- Caching: Redis ile:
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$value = $redis->get('key');
if ($value === false) {
$value = fetchData(); // Veriyi getir
$redis->set('key', $value, 3600); // 1 saat cache’le
}
- Asenkron İşlemler: Swoole ile:
$http = new Swoole\Http\Server('0.0.0.0', 9501);
$http->on('request', function ($request, $response) {
$response->end('Merhaba Swoole!');
});
$http->start();
- Profiling: Xdebug ile performansı analiz edin:
xdebug.mode=profile
xdebug.output_dir=/tmp
Örnek: Bir API, OPcache ile yanıt süresini %40 azalttı.
WordPress Gibi CMS’lerde PHP Kullanımı
PHP, CMS’lerin belkemiğidir. WordPress, %43 pazar payıyla PHP tabanlıdır. Özellikler:
- Tema ve Eklenti Geliştirme: functions.php ile custom fonksiyonlar:
function my_custom_function() {
echo 'Merhaba WordPress!';
}
add_action('wp_footer', 'my_custom_function');
- Veritabanı İşlemleri: $wpdb ile:
global $wpdb;
$results = $wpdb->get_results('SELECT * FROM wp_posts');
foreach ($results as $row) {
echo $row->post_title;
}
- Güvenlik: wp_nonce ile CSRF koruma:
wp_nonce_field('my_action', 'my_nonce');
if (wp_verify_nonce($_POST['my_nonce'], 'my_action')) {
// İşle
}
- Performans: Caching eklentileri (WP Super Cache) ile PHP hızlandırın.
Örnek: Bir WordPress eklentisi, PHP ile kullanıcı rollerini yönetti, site performansını %25 artırdı.
Adım Adım Tutorial: Basit Bir PHP Blog Uygulaması
Bir blog uygulaması yapalım:
Adım 1: Sunucu Hazırlığı
-
Apache/Nginx ve PHP 8.4 kurun.
-
MySQL veritabanı oluşturun: blog_db.
Adım 2: Veritabanı Bağlantısı
config.php
:
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'blog_db';
$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) {
die('Bağlantı hatası');
}
?>
Adım 3: Tablo Oluşturma
SQL ile:
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
content TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
Adım 4: Yazı Ekleme Formu
add_post.php
:
<?php include 'config.php'; ?>
<!DOCTYPE html>
<html>
<body>
<form method="post">
Başlık: <input type="text" name="title"><br>
İçerik: <textarea name="content"></textarea><br>
<input type="submit" name="submit" value="Ekle">
</form>
<?php
if (isset($_POST['submit'])) {
$title = mysqli_real_escape_string($conn, $_POST['title']);
$content = mysqli_real_escape_string($conn, $_POST['content']);
$sql = "INSERT INTO posts (title, content) VALUES ('$title', '$content')";
if ($conn->query($sql) === TRUE) {
echo 'Yazı eklendi';
} else {
echo 'Hata: ' . $conn->error;
}
}
$conn->close();
?>
</body>
</html>
Adım 5: Yazıları Listeleme
list_posts.php
:
<?php include 'config.php'; ?>
<?php
$sql = 'SELECT * FROM posts ORDER BY created_at DESC';
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo '<h2>' . htmlspecialchars($row['title']) . '</h2>';
echo '<p>' . nl2br(htmlspecialchars($row['content'])) . '</p>';
echo '<hr>';
}
} else {
echo 'Yazı yok';
}
$conn->close();
?>
Adım 6: Test Etme
- Sunucuda çalıştırın, yazı ekleyin ve listeleyin.
Süre: 1 saat. Güvenlik ekleyin: Escape fonksiyonları ile injection önleyin.
Sonuç: PHP ile Web’in Geleceğini Kodlayın
PHP, web geliştirmenin temel taşı. Tarihi, scripting gücü, veritabanı entegrasyonu ve framework’leriyle, 2025’in vazgeçilmezi. Bu rehberle, PHP’yi öğrenip projelerinizi hayata geçirin. Datatelekom’un altyapısıyla, uygulamalarınızı güvenle barındırın ve dijital dünyayı fethedin!