Kişisel

Yazılım

Siyaset

Güncel Konular

Ziya YILDIRIM

PHP ile JWT Tabanlı Giriş Sistemi: Token’la Giriş, Şifreyle Çıkış

18 Haziran 15:11

Günümüzde “giriş sistemi” deyince akla artık klasik “kullanıcı adı – şifre – oturum başlat” üçlüsü gelmiyor.
Modern sistemler JWT (JSON Web Token) kullanıyor.
Neden? Çünkü hızlı, güvenli ve REST API'lerle şahane çalışıyor.

Ve evet hacı, PHP ile de rahatlıkla JWT sistemi kurabilirsin.

JWT Nedir, Ne İşe Yarar?

JWT, sunucu ile istemci arasında kimlik doğrulama ve veri iletimi için kullanılan bir tokendır.
İçinde kullanıcı bilgileri, geçerlilik süresi gibi veriler olur. Şifrelenir, imzalanır ve frontend’e gönderilir.

Frontend her istekte bu token'ı gönderir.
Yani artık $_SESSION yok, token var.
Her şey JSON, her şey API uyumlu.

Proje Kurgusu: Ne Yapacağız?

  1. Kullanıcı adı ve şifre ile login olacak.
  2. Bilgiler doğruysa JWT üretilecek.
  3. Token frontend’e verilecek.
  4. Korunan sayfalara sadece token'ı olan girebilecek.

Gerekli Araçlar

JWT oluşturmak için Firebase PHP JWT kütüphanesini kullanacağız.

Kurulum (Composer ile):

composer require firebase/php-jwt

Adım 1: Token Oluşturma (Login)

<?php
require 'vendor/autoload.php';

use \Firebase\JWT\JWT;
use \Firebase\JWT\Key;

$secretKey = 'gizli_anahtar';
$kullanici = $_POST['kullanici'];
$sifre = $_POST['sifre'];

// örnek kullanıcı (veritabanından da çekebilirsin)
if($kullanici == 'admin' && $sifre == '123456'){
    $payload = [
        'iss' => 'seninsiten.com',
        'iat' => time(),
        'exp' => time() + 3600, // 1 saat geçerli
        'kullanici' => $kullanici
    ];

    $jwt = JWT::encode($payload, $secretKey, 'HS256');

    echo json_encode([
        'status' => 'success',
        'token' => $jwt
    ]);
} else {
    echo json_encode([
        'status' => 'error',
        'message' => 'Kullanıcı adı veya şifre yanlış'
    ]);
}
?>

Adım 2: Token Doğrulama (Giriş Kontrolü)

<?php
require 'vendor/autoload.php';

use \Firebase\JWT\JWT;
use \Firebase\JWT\Key;

$secretKey = 'gizli_anahtar';
$headers = getallheaders();

if(!isset($headers['Authorization'])){
    die("Yetkisiz erişim.");
}

$token = str_replace('Bearer ', '', $headers['Authorization']);

try {
    $decoded = JWT::decode($token, new Key($secretKey, 'HS256'));
    echo "Hoşgeldin, " . $decoded->kullanici;
} catch (Exception $e) {
    http_response_code(401);
    echo "Geçersiz token.";
}
?>

Token’ı Saklamak ve Kullanmak

Frontend tarafında token’ı aldıktan sonra:

  • localStorage veya sessionStorage’a kaydedersin
  • Her API isteğine Authorization: Bearer [token] başlığıyla eklersin

Neden Bu Kadar Popüler?

  • Mobil uygulamalarla uyumlu
  • Oturuma bağımlı değil
  • Taşınabilir ve şifreli
  • Mikro servis sistemlerinde token tek başına yeterli

Güvenlik İpuçları

  • Token’a kısa ömür ver (örneğin 1 saat)
  • HTTPS kullan
  • Token’ı iptal etme sistemin de olsun
  • Refresh Token mantığını kurabilirsin (ileri seviye)

Sonuç: Sessiz, Hızlı ve Güvenli

JWT kullanarak, PHP’de klasik oturum sisteminin ötesine geçiyoruz.
Artık kullanıcı giriş yaptı mı, token’ı aldı mı, her yerden tanınır hale gelir.
Ve bu sistem hem sade, hem taş gibi güvenli.
Yani hacı:
Şifreyle girdin, token’la kaldın. Oturumla uğraşmadın, çerezle karışmadın.

Beğen 1
Paylaş

Yorum yaz

Bağlantılar

asmbly.com © 2005 – Bu satırın çalınması bile telif ihlalidir, hele tasarımımızı kopyalayanı direkt rüyada kovalarız.
Tasarım ve uygulama asmbly idea & application