İnfo112

Administrator
Registered
Katılım
14 May 2022
Mesajlar
1,590
Çözümler
53
T. puanı
2,757
CF-Coin
3,357₺

⭐ 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 sunucu taraflı çalışan bir programlama dilidir. Bu ne demek? Kodlar tarayıcıda değil, sunucuda işlenir ve sonuç kullanıcıya saf HTML olarak gönderilir.

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?​

  1. Kullanıcı bir PHP sayfası isteğinde bulunur
  2. Sunucu PHP kodlarını işler
  3. Sonuç saf HTML olarak kullanıcıya gönderilir
  4. 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ü:

  1. İş garantisi - Türkiye'de PHP developer ihtiyacı her zaman yüksek
  2. Hızlı prototip - fikirleri çabucak hayata geçirebilirsin
  3. Düşük maliyet - hosting ve sunucu maliyetleri uygun
  4. Zengin ekosistem - binlerce hazır çözüm ve kütüphane
  5. Sürekli gelişim - PHP 8+ ile modern programlama paradigmaları
  6. Topluluk desteği - karşılaştığın her sorunun çözümü mevcut
Unutma: Dil sadece bir araçtır. Önemli olan problemi çözme yeteneğindir. PHP, web geliştirme problemlerini çözmek için hâlâ en etkili araçlardan biridir.

PHP ölmedi, dönüştü ve senin gibi geliştiriciler sayesinde daha da güçleniyor! 🚀
 
SPAM YAPMAK YASAKTIR!
  • Örneğin: teşekkürler, sağol, çok iyi, asdqwe, çalışıyor, ty ve benzeri!
  • Örneğin: Aynı mesajı sürekli olarak yazmak. teşekkürler, tşk ve benzeri!
  • Bir başkasının mesajını kopyalayıp aynısını yazmak yasaktır.
  • Bilginiz olmadığı konulara yorum sayınız artsın diye mesaj atmak yasaktır.
  • Yorum yaparken kendi fikrinizi yazınız!
  • Spam mesaj atan görürseniz RAPOR tuşu ile bize bildirmeniz önem ve rica olunur!
Geri
Üst