Core/Http — istek/yanıt motoru, doğrulama ve form güvenliği
Doğrulanan kod tabanı:
d49b4413(dalfeat/fw-license-master) · Tarih: 2026-10-05 · Yayın: 0.9.7 = bu commit + sonrası; belge yalnız doğrulama anındaki kodu anlatır
Kaynak klasör:Core/Http/— 36*.php= 5 kök + 17Engine/+ 14Security/.
Spek §1 "≥20 php alan için alt dal belgesi" kuralı gereği bu klasör üç belgeye
bölünmüştür: kök dosyalar burada,Engine/→ Engine.md,
Security/→ Security.md.
Envanter: 36 dosyanın 36'sı anlatıldı (5 + 17 + 14).
1. Ne işe yarar, kim kullanır
İsteği okuyan (Request), yanıtı yazan (Response), kullanıcıya mesaj
iletiren (AlertService), dışarıya istek atan (RemoteRequest) ve kuralları
çalıştıran (Validator) beş sınıfı bir araya getirir. Hepsi trait'lere
bölünmüştür; trait'ler Engine/ altındadır.
Kimler çağırır: tüm controller'lar (request(), response(), alert()
yardımcıları), ValidationTrait → FormService, Core/Routes/Mappings/web.php
(ApiGuard), Packages/RbnEmail ve ajan entegrasyonları (RemoteRequest),
Packages/RbnFile (UploadedFile).
2. Klasör/dosya envanteri — kök (5/5)
| Dosya | Görev | Önemli public yöntemler |
|---|---|---|
Request.php |
İstek anlık görüntüsü; $_POST/$_GET/$_FILES/$_SERVER yakalar, 5 trait kullanır. |
__construct(), getJsonData(): array, static capture(): self |
Response.php |
Yanıt motoru; 3 trait (Header/Content/Redirect) kullanır. | static getInstance(): self, send(): void |
AlertService.php |
Tek mesaj kanalı (kilitli). Session/cookie saklar, AJAX'ta JSON, normalde yönlendirme. | static get(): self, send(string $type,string $message,?string $redirectUrl=null,?string $message2=null,array $data=[]): void |
RemoteRequest.php |
cURL tabanlı dış HTTP istemcisi. | request(string $method,string $url,array $params=[],array $headers=[],bool $isJson=true,array $options=[]): array, get(...), post(...) |
Validator.php |
Kural motoru; kural adı → validateX() metodu eşlemesi. |
__construct(array $data,array $rules,array $messages=[]), static make(...), fails(): bool, errors(): array, validated(): array, validate(): array, unknownRules(): array |
Alt dal belgeleri:
| Alt klasör | *.php |
Belge | Kapsama |
|---|---|---|---|
Engine/ |
17 | Engine.md | 17/17 |
Security/ |
14 | Security.md | 14/14 |
3. Akış (kök sınıfların bağladığı zincir)
$request = request() Base/Web yardımcısı → Request::capture()
└─ Request::__construct() $_POST/$_GET/$_FILES/$_SERVER anlık görüntüsü
├─ InputTrait (girdi toplama) → Engine.md §2.2
├─ DetectionTrait (method/içerik tipi) → Engine.md §2.2
├─ ContextTrait (IP/proje/UA/başlık) → Engine.md §2.2
├─ FileTrait (dosya girdileri) → Engine.md §2.2
└─ ValidationTrait (shield + validate) → Engine.md §3.1
$response = response() Response::getInstance()
├─ HeaderTrait status/header/cookie → Engine.md §2.3
├─ ContentTrait body/json/success → Engine.md §2.3
└─ RedirectTrait redirect + güvenliHedef süzgeci → Engine.md §3.2
alert()->error('...', '/panel') AlertService::get()->send()
├─ NotificationTrait kısa yolları → Engine.md §2.5
├─ StorageTrait session/cookie → Engine.md §2.5
└─ send() → response()->guvenliHedef($redirectUrl) (AlertService.php:70)
Validator::make(all(), $rules) kural adını validate<Rule> metoduna çevirir
(Validator.php:104); eşleşme yoksa kural kayıt + error_log ile
geçilmez, devam eder (Validator.php:143).
4. Yapılandırma / ayar anahtarları
| Anahtar | Yer | Varsayılan / not |
|---|---|---|
security.form_input_mode |
Engine/Traits/Request/ValidationTrait.php:178 |
enforce; kabul: off\|log\|enforce. Okunamaz/bozuk → enforce (fail-closed) |
external-api.php proje ayarı |
Security/ApiGuard.php:49 |
enabled, allowed_origins, allow_query_token, api_key, keys[] |
| Cookie bayrakları | Engine/Traits/Response/HeaderTrait.php:56 |
httpOnly=true, sameSite='Lax', secure null ise RequestEnvironment::isHttpsRequest() |
Ayrıntılı tablo: Engine.md §4 ve Security.md §4.
5. Tuzaklar ve kurallar (kök katman)
AlertService::send()yönlendirme süzgeci zorunludur. AJAX yolunda
redirect()hiç çağrılmadığı için$redirectUrlelle
guvenliHedef()'ten geçirilir (AlertService.php:70); bu satır
silinirse AJAX mesajları açık yönlendirme açığıdır.Validatorbilinmeyen kuralı sessizce geçmez (kayıt +error_log+
devam) — bu, tavan katmanında KVKK onay kutusu doğrulamasının
uygulanmadığı canlı bir hatayı yakalamıştır.- Tek giriş noktası ilkesi: dışarıdan korumasız ham gövde okuma yolu
rawAll()'dır;rawInput()protected'tır
(Engine/Traits/Request/InputTrait.php:23). ResponseveAlertServicetekil (singleton);BaseComponent::__get()
bunları$this->response/$this->requestadıyla açar
(../Base/README.md).
6. Örnek (gerçek koddan)
// doğrulamalı + kalkanlı form (ValidationTrait.php:125 sözleşmesi)
$data = request()->form(['email' => 'required|email'], ['csrf' => true]);
// JSON yanıt
return response()->success($data, 'Kaydedildi');
// güvenli yönlendirme
return response()->redirect('/panel/blog');
7. İlgili belgeler
- Engine.md — istek/yanıt trait'leri, doğrulama zinciri, kural motoru, redirect süzgeci
- Security.md — form kalkanı handler'ları,
ApiGuard, makine anahtar deposu - ../Routes/README.md —
ApiGuardmiddleware bağlantısı - ../Base/README.md —
BaseComponent::__get()ile$this->request/response/logs - ../System/Config.md —
Config::get()ve ayar önceliği - ../../Packages/RbnFile.md —
UploadedFiletüketicisi - ../../Packages/RbnEmail.md —
RemoteRequesttüketicisi - ../../kavramlar/02-yapilandirma.md —
security.*anahtarları