PHP Form İşlemleri

PHP Form İşlemleri
PHP Form İşlemleri
0

PHP, web geliştirme dünyasında en yaygın kullanılan sunucu taraflı programlama dillerinden biridir. Özellikle form işlemleri, kullanıcı etkileşiminin temelini oluşturur. Bu ders içeriğinde, PHP form işlemlerini detaylı bir şekilde ele alacak, örnek kodlar ve açıklamalarla konuyu anlaşılır hale getireceğiz.

PHP form işlemleri, kullanıcıların web sitelerinde doldurduğu formların sunucu tarafında işlenmesini sağlar. Bu işlemler, kullanıcıdan alınan verilerin doğrulanması, işlenmesi ve veritabanına kaydedilmesi gibi adımları içerir. PHP, bu süreçte hem güvenli hem de etkili bir şekilde kullanılabilir.

Formlar, kullanıcıdan veri almak için HTML’de kullanılan yapılardır. PHP, bu verileri alıp işlemek için mükemmel bir araçtır. Veri işleme işlemleri genellikle GET ve POST yöntemleriyle yapılır.

GET ve POST Yöntemleri Arasındaki Farklar:

  • GET: Veriler URL üzerinden gönderilir ve bu nedenle sınırlı boyutta veri taşır.
  • POST: Veriler HTTP isteğiyle gönderilir, URL’de görünmez ve daha büyük boyutlu veri taşınabilir.

GET Yöntemi

GET yöntemi, form verilerini URL üzerinden sunucuya gönderir. Veriler, URL’nin sonuna eklenir ve bu nedenle tarayıcının adres çubuğunda görünür hale gelir. Bu yöntem genellikle veri almak (örneğin, arama sorguları) için kullanılır. GET yöntemiyle gönderilen veriler URL’de görüneceği için hassas veriler için uygun değildir.

 

GET Yöntemi Özellikleri:

  • URL’de Görünür: Veriler, URL’nin sonuna ? işaretiyle eklenir. Örneğin: https://kodkampusu.com/form_islem.php?isim=Oktay&email=oktay@example.com
  • Sınırlı Veri Boyutu: URL uzunluğu sınırlı olduğu için büyük veriler gönderilemez.
  • Güvenlik: Veriler URL’de göründüğü için hassas bilgiler (şifreler, kredi kartı bilgileri) gönderilmemelidir.
  • Önbelleklenebilir: GET istekleri tarayıcı tarafından önbelleğe alınabilir.

 

GET Hangi Durumlarda Kullanılır?

  • Veri almak istediğinizde (örneğin, arama sonuçları, filtreleme).
  • Sayfalar arasında veri taşımak istediğinizde.
  • Verilerin URL’de görünmesinde sakınca olmadığı durumlarda.

 

GET Yöntemi Örneği:

 

 

Bu form gönderildiğinde, URL şu şekilde olacaktır:
https://kodkampusu.com/form_islem.php?isim=Oktay&email=oktay@example.com


POST Yöntemi

POST yöntemi, form verilerini URL üzerinden değil, HTTP isteğinin gövdesi (body) üzerinden sunucuya gönderir. Bu yöntem, daha güvenli ve büyük verilerin gönderilmesi için uygundur.

POST Yöntemi Özellikleri:

  • URL’de Görünmez: Veriler tarayıcının adres çubuğunda görünmez.
  • Büyük Veri Boyutu: GET yöntemine göre daha büyük veriler gönderilebilir.
  • Güvenlik: Hassas bilgiler (şifreler, kredi kartı bilgileri) için daha uygundur.
  • Önbelleklenemez: POST istekleri tarayıcı tarafından önbelleğe alınmaz.

 

POST Hangi Durumlarda Kullanılır?

  • Veri göndermek istediğinizde (örneğin, kullanıcı kaydı, giriş işlemleri).
  • Hassas bilgiler (şifreler, kredi kartı bilgileri) gönderirken.
  • Büyük boyutlu veriler gönderirken.

 

POST Yöntemi Örneği:

 


GET ve POST Arasındaki Farklar

ÖzellikGET YöntemiPOST Yöntemi
Veri Gönderim YeriURL üzerindenHTTP istek gövdesi üzerinden
Veri GörünürlüğüURL’de görünürURL’de görünmez
Veri BoyutuSınırlı (URL uzunluğu nedeniyle)Büyük veriler gönderilebilir
GüvenlikHassas bilgiler için uygun değilHassas bilgiler için uygun
ÖnbelleklenebilirlikEvetHayır
Kullanım AlanıVeri almak (arama, filtreleme)Veri göndermek (kayıt, giriş)

Form Verisi Doğrulama ve Güvenlik

Kullanıcıdan alınan veriler üzerinde doğrulama ve güvenlik işlemleri yapmak, hem web uygulamalarınızın güvenliğini sağlamak hem de kullanıcı deneyimini geliştirmek için oldukça önemlidir. Bu bölümde, detaylı bir şekilde form verilerinin doğrulanması ve saldırılara karşı alınması gereken önlemleri inceleyeceğiz.

Veri Kontrolleri

Kullanıcıdan gelen verilerin geçerli olup olmadığını kontrol etmek, olası hataları ve saldırıları önlemede ilk adımdır. PHP’de bu işlem, çeşitli yerleşik fonksiyonlar ve kontroller kullanılarak yapılabilir. empty() fonksiyonu, bir değişkenin boş olup olmadığını kontrol eder. Bu, kullanıcının önemli bir alanı boş geçmesini önlemek için kullanılır.

 

Veri Tipi Kontrolü

Bazı alanlarda belirli veri türlerinin (örneğin, sayı veya e-posta) gönderilmesi beklenir. PHP ile bu tür kontroller yapılabilir. is_numeric() fonksiyonu, bir değerin sayısal olup olmadığını kontrol eder. Örneğin, bir yaş alanına metin yerine sayı girmesini sağlamak için kullanılır.

 

 

XSS Saldırılarına Karşı Korunma

XSS saldırıları, kullanıcıdan alınan verilere zararlı kodların yerleştirilmesiyle gerçekleşir. Bu tür saldırılara karşı en etkili yöntem, kullanıcıdan alınan veriyi işlenmeden önce temizlemektir. htmlspecialchars() fonksiyonu, HTML özel karakterlerini dönüştürerek zararlı kodların çalıştırılmasını engeller. Örneğin, <script> etiketi gibi zararlı bir kod, "&lt;script&gt;" olarak işlenir ve etkisiz hale gelir.

 

SQL Injection’a Karşı Korunma

SQL Injection, bir SQL sorgusuna zararlı komutların enjekte edilmesiyle yapılan saldırılardır. Bu tür saldırılara karşı, kullanıcı verilerini veritabanına eklemeden önce doğrulamak ve işlemek gerekir. mysqli_real_escape_string() fonksiyonu, kullanıcı tarafından gönderilen verilerdeki zararlı karakterleri temizler ve SQL Injection riskini azaltır.

 

CSRF (Cross-Site Request Forgery) Saldırılarına Karşı Korunma

CSRF saldırıları, kullanıcının bilgisi olmadan başka bir siteye istek göndermek için yapılır. Buna karşı korunmak için form verilerinde bir CSRF token kullanılabilir. CSRF token, bir formun sahte bir kaynaktan gönderilmesini önler. Her kullanıcıya özel olarak üretilen bir token kullanılır ve bu token, sunucuda doğrulanır.


PHP ile Veri Filtreleme ve Doğrulama

PHP, kullanıcılardan alınan verileri filtrelemek ve doğrulamak için yerleşik filtreleme fonksiyonları sağlar. Bu yöntemler, özellikle e-posta ve URL gibi belirli formatların doğrulanmasında çok kullanışlıdır.

 

E-Posta Adresi Doğrulama

FILTER_SANITIZE_EMAIL ; Bir e-posta adresini doğrulamak ve gereksiz karakterleri temizlemek için kullanılır.

 

URL Kontrolü

FILTER_VALIDATE_URL ; Bir URL adresini doğrulamak için kullanılır.


Örnek form oluşturma

Öğrendiğimiz bilgiler doğrultusunda bir form yapısı oluşturalım. Oluşturduğumuz formu php ile bağlayalım ve gereken güvenlik önemlerini de alarak form yapısını güçlendirelim.

 

HTML Kodu:

  • action="islem.php": Formdan gönderilen veriler, islem.php dosyasında işlenecektir.
  • method="POST": Form verileri HTTP POST yöntemiyle gönderilir. Bu, verilerin URL’de görünmesini engeller ve daha güvenlidir.
  • required: Alanların doldurulmasını zorunlu kılar.
  • min ve max: Yaş alanında minimum ve maksimum değer sınırlarını belirler.

 

PHP Kodu:

  • $_SERVER["REQUEST_METHOD"]: Formun POST yöntemiyle gönderilip gönderilmediğini kontrol eder.
  • htmlspecialchars(): Zararlı kodların çalıştırılmasını önler. Örneğin, <script> etiketlerini etkisiz hale getirir.
  • trim(): Kullanıcının girdiği verilerin başındaki ve sonundaki gereksiz boşlukları temizler.
  • filter_var(): E-posta adresinin geçerliliğini kontrol eder.
  • is_numeric(): Yaşın yalnızca sayı olmasını sağlar.

 

Form güvenliğini artırmak için alınan önlemleri açıklayalım:

  1. XSS Koruması:
    Kullanıcıdan alınan veriler, htmlspecialchars() ile temizlendiği için zararlı JavaScript kodları çalıştırılamaz.

    • Örnek: Kullanıcı <script>alert('Hack');</script> girerse, bu kod &lt;script&gt;alert('Hack');&lt;/script&gt; olarak işlenir ve etkisiz hale gelir.
  2. SQL Injection Koruması:
    Eğer veriler bir veritabanına kaydedilecekse, mysqli_real_escape_string() veya PDO kullanılarak SQL Injection saldırılarına karşı önlem alınmalıdır.
  3. Doğrulama ve Sınırlandırma:
    • FILTER_VALIDATE_EMAIL ile geçerli bir e-posta adresi sağlanır.
    • is_numeric() ve min/max kontrolleri ile yaş alanına yalnızca uygun değerler girilmesi sağlanır.
Paylaş
İlginizi Çekebilir
PHP Döngüler

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


ReCAPTCHA doğrulama süresi sona erdi. Lütfen sayfayı yeniden yükleyin.