⭐ PHP Nedir? Kısaca ve Net Bir Şekilde
PHP: Hypertext Preprocessor (Özyinelemeli bir kısaltma) - web sitelerinin beyni, ruhu ve işleyiş mekanizmasıdır.Eğer web geliştirmeyi bir insan vücuduna benzetirsek:
- HTML → İskelet yapısı
- CSS → Görünüm ve makyaj
- JavaScript → Kas hareketleri ve refleksler
- PHP → Beyin ve sinir sistemi
PHP'nin Yaptığı Temel İşler:
- ✅ Formlardan gelen verileri işlemek ve veritabanına kaydetmek
- ✅ Kullanıcı girişi (login) ve oturum yönetimi
- ✅ Dinamik içerik oluşturma ve listelemek
- ✅ Ödeme işlemlerini yönetmek ve entegrasyon sağlamak
- ✅ Admin paneli ve yönetim arayüzleri oluşturmak
- ✅ API'lerle iletişim kurmak ve veri alışverişi sağlamak
⭐ PHP Gerçek Dünyada Nerede Kullanılır?
İstatistikler konuşuyor:- İnternet'teki tüm web sitelerinin %78'i PHP kullanıyor
- WordPress (web'in %43'ü) PHP ile çalışıyor
- Wikipedia, Facebook (başlangıçta), Slack gibi devler PHP temelli
Senin Günlük Hayatında PHP:
- E-ticaret sistemleri (OpenCart, WooCommerce)
- Forum yazılımları (XenForo, vBulletin)
- API entegrasyonları (PayTR, iyzico, PayU)
- Admin panelleri ve dashboard'lar
- Laravel ve CodeIgniter projeleri
- Özel CRM ve ERP çözümleri
⭐ PHP'nin Temel Mantığı ve Çalışma Prensibi
Temel Syntax:
PHP:
<?php // PHP kodları burada çalışır echo "Merhaba Dünya!"; $isim = "Ahmet"; echo "Hoş geldin, " . $isim; ?>
Nasıl Çalışır?
- Kullanıcı bir PHP sayfası isteğinde bulunur
- Sunucu PHP kodlarını işler
- Sonuç saf HTML olarak kullanıcıya gönderilir
- Kullanıcı sadece HTML sonucu görür, PHP kodları asla görünmez
⭐ Veritabanı ile Çalışmak: PHP + MySQL
Modern MySQLi Bağlantısı:
PHP:
<?php
$servername = "localhost";
$username = "kullanici_adi";
$password = "sifre";
$dbname = "veritabani_adi";
// Bağlantı oluştur
$conn = new mysqli($servername, $username, $password, $dbname);
// Bağlantıyı kontrol et
if ($conn->connect_error) {
die("Bağlantı hatası: " . $conn->connect_error);
}
// Veri çekme örneği
$sql = "SELECT id, username, email FROM users WHERE active=1";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"]. " - Kullanıcı: " . $row["username"]. " - Email: " . $row["email"]. "
";
}
} else {
echo "Sonuç bulunamadı";
}
$conn->close();
?>
PDO (PHP Data Objects) - Daha Modern Yaklaşım:
PHP:
<?php
try {
$pdo = new PDO("mysql:host=localhost;dbname=veritabani_adi", "kullanici_adi", "sifre");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
text
// Güvenli veri çekme
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->execute(['id' => $user_id]);
$user = $stmt->fetch();
} catch(PDOException $e) {
echo "Hata: " . $e->getMessage();
}
?>
⭐ PHP'nin Güçlü Olduğu Noktalar: Gerçek Dünya Senaryoları
🔥 Form İşlemleri ve Validasyon
PHP:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$ad = htmlspecialchars(trim($_POST['ad']));
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
$mesaj = htmlspecialchars(trim($_POST['mesaj']));
text
if ($ad && $email && $mesaj) {
// Veritabanına kaydet veya email gönder
echo "Form başarıyla gönderildi!";
} else {
echo "Lütfen tüm alanları doğru doldurun!";
}
}
?>
🔥 Login/Register Sistemi
PHP:
<?php
session_start();
// Giriş kontrolü
if (isset($_POST['login'])) {
$username = $_POST['username'];
$password = $_POST['password'];
text
// Veritabanı kontrolü
$user = $db->query("SELECT * FROM users WHERE username = ?", [$username])->fetch();
if ($user && password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
header("Location: dashboard.php");
exit;
} else {
$error = "Kullanıcı adı veya şifre hatalı!";
}
}
?>
🔥 Token Üretme ve Güvenlik
PHP:
<?php
// CSRF Token üretimi
function generateCSRFToken() {
if (empty($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
return $_SESSION['csrf_token'];
}
// API Token üretimi
function generateAPIToken($userId) {
$payload = [
'user_id' => $userId,
'created' => time(),
'expires' => time() + (60 * 60 * 24) // 24 saat
];
text
return base64_encode(json_encode($payload)) . '.' .
hash_hmac('sha256', base64_encode(json_encode($payload)), 'gizli_anahtar');
}
?>
🔥 Session ve Cookie Yönetimi
PHP:
<?php
session_start();
// Oturum değişkenleri
$_SESSION['kullanici_id'] = 123;
$_SESSION['login_time'] = time();
// Cookie işlemleri
setcookie('kullanici_tercihi', 'dark_mode', time() + (86400 * 30), "/"); // 30 gün
// Güvenli oturum kontrolü
function checkSession() {
if (!isset($_SESSION['user_id']) ||
(time() - $_SESSION['login_time']) > 3600) { // 1 saat
header("Location: login.php");
exit;
}
}
?>
🔥 Dosya Yükleme ve Resim İşleme
PHP:
<?php
if (isset($[I]FILES['resim'])) {
$hedefKlasor = "uploads/";
$dosyaAdi = uniqid() . "[/I]" . basename($_FILES["resim"]["name"]);
$hedefYol = $hedefKlasor . $dosyaAdi;
text
// Dosya tipi kontrolü
$izinliTipler = ['jpg', 'jpeg', 'png', 'gif'];
$dosyaUzantisi = strtolower(pathinfo($hedefYol, PATHINFO_EXTENSION));
if (in_array($dosyaUzantisi, $izinliTipler)) {
if (move_uploaded_file($_FILES["resim"]["tmp_name"], $hedefYol)) {
echo "Dosya başarıyla yüklendi!";
// Resmi optimize et
compressImage($hedefYol, $hedefYol, 75);
}
}
}
function compressImage($kaynak, $hedef, $kalite) {
$info = getimagesize($kaynak);
text
if ($info['mime'] == 'image/jpeg') {
$image = imagecreatefromjpeg($kaynak);
imagejpeg($image, $hedef, $kalite);
} elseif ($info['mime'] == 'image/png') {
$image = imagecreatefrompng($kaynak);
imagepng($image, $hedef, 9);
}
imagedestroy($image);
}
?>
🔥 API İletişimi ve Entegrasyon
PHP:
<?php
// PayTR Entegrasyon Örneği
class PayTRIntegration {
private $merchant_id;
private $merchant_key;
private $merchant_salt;
text
public function __construct($id, $key, $salt) {
$this->merchant_id = $id;
$this->merchant_key = $key;
$this->merchant_salt = $salt;
}
public function createPayment($orderData) {
$hash = base64_encode(
hash_hmac('sha256',
$this->merchant_id . $orderData['user_ip'] . $orderData['email'] .
$orderData['payment_amount'] . $orderData['merchant_oid'] .
$orderData['user_name'] . $this->merchant_salt,
$this->merchant_key, true
)
);
// API isteği gönder
$response = $this->callAPI($hash, $orderData);
return $response;
}
private function callAPI($hash, $data) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.paytr.com/odeme/api/get-token");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/x-www-form-urlencoded'
]);
$result = curl_exec($ch);
curl_close($ch);
return json_decode($result, true);
}
}
?>
⭐ PHP Framework'ler: Modern Geliştirme Araçları
✔ Laravel - Modern PHP'nin Kralı
PHP:
<?php
// Routes/web.php
Route::get('/urunler', 'ProductController@index');
Route::post('/urun-ekle', 'ProductController@store');
// App/Http/Controllers/ProductController.php
class ProductController extends Controller {
public function index() {
$urunler = Product::with('category')->where('active', true)->get();
return view('products.index', compact('urunler'));
}
text
public function store(Request $request) {
$request->validate([
'name' => 'required|string|max:255',
'price' => 'required|numeric'
]);
Product::create($request->all());
return redirect()->route('urunler')->with('success', 'Ürün eklendi!');
}
}
?>
Laravel'in Güçlü Özellikleri:
- Eloquent ORM (Veritabanı işlemleri)
- Blade Template Engine
- Authentication sistemi
- Artisan CLI
- Migration sistemleri
- Queue ve Job yönetimi
✔ CodeIgniter - Hafif ve Hızlı
PHP:
<?php
class User extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('User_model');
$this->load->library('session');
}
text
public function profile($user_id) {
$data['user'] = $this->User_model->get_user($user_id);
$this->load->view('user_profile', $data);
}
}
?>
✔ Saf PHP (Raw PHP) - Framework'süz Yaklaşım
PHP:
<?php
// Basit MVC benzeri yapı
class Router {
public function route($url) {
$parts = explode('/', $url);
$controller = $parts[0] ?: 'home';
$action = $parts[1] ?? 'index';
text
$controllerClass = ucfirst($controller) . 'Controller';
if (class_exists($controllerClass)) {
$controllerInstance = new $controllerClass();
if (method_exists($controllerInstance, $action)) {
$controllerInstance->$action();
}
}
}
}
class HomeController {
public function index() {
$db = new Database();
$products = $db->query("SELECT * FROM products WHERE active=1");
require 'views/home.php';
}
}
?>
⭐ PHP 8+ ile Gelen Modern Özellikler
PHP:
<?php
// Union Types
class User {
public function find(int|string $id): User|false {
// id integer veya string olabilir
// dönüş User veya false olabilir
}
}
// Match Expression
$status = match($httpCode) {
200, 201 => 'success',
404 => 'not found',
500 => 'server error',
default => 'unknown'
};
// Named Parameters
function createUser(string $name, string $email, int $age = 0) {
// ...
}
createUser(name: "Ahmet", email: "ahmet@example.com");
// Attributes (Annotation'lar)
#[Route('/api/users')]
class UserController {
#[GET('/{id}')]
public function getUser(int $id) {
// ...
}
}
// Constructor Property Promotion
class User {
public function __construct(
public string $name,
public string $email,
private DateTime $createdAt = new DateTime()
) {}
}
?>
⭐ Gerçek Dünya Proje Örnekleri
E-ticaret Sepet Sistemi:
PHP:
<?php
class ShoppingCart {
private $items = [];
text
public function addItem($productId, $quantity = 1) {
if (isset($this->items[$productId])) {
$this->items[$productId]['quantity'] += $quantity;
} else {
$this->items[$productId] = [
'product_id' => $productId,
'quantity' => $quantity,
'added_at' => time()
];
}
$_SESSION['cart'] = $this->items;
}
public function getTotal() {
$total = 0;
foreach ($this->items as $item) {
$product = $this->getProduct($item['product_id']);
$total += $product['price'] * $item['quantity'];
}
return $total;
}
}
?>
Admin Paneli Dashboard:
PHP:
<?php
class AdminDashboard {
public function getStats() {
return [
'total_users' => $this->getTotalUsers(),
'today_orders' => $this->getTodayOrders(),
'monthly_revenue' => $this->getMonthlyRevenue(),
'pending_reviews' => $this->getPendingReviews()
];
}
text
public function getRecentActivities() {
return $this->db->query("
SELECT activity_type, description, created_at
FROM admin_activities
ORDER BY created_at DESC
LIMIT 10
")->fetchAll();
}
}
?>
⭐ Sonuç: PHP Senin İçin Neden Doğru Tercih?
PHP senin teknolojik enerji kaynağın çünkü:- İş garantisi - Türkiye'de PHP developer ihtiyacı her zaman yüksek
- Hızlı prototip - fikirleri çabucak hayata geçirebilirsin
- Düşük maliyet - hosting ve sunucu maliyetleri uygun
- Zengin ekosistem - binlerce hazır çözüm ve kütüphane
- Sürekli gelişim - PHP 8+ ile modern programlama paradigmaları
- Topluluk desteği - karşılaştığın her sorunun çözümü mevcut
PHP ölmedi, dönüştü ve senin gibi geliştiriciler sayesinde daha da güçleniyor! 🚀