🇹🇷
Merhaba!
SQL Düzenleyicisi
  • 🥳Merhaba!
  • 🔃API
    • API'ler
      • Alan Adı Sorgulama WHOIS API
      • İp Adresi Sorgulama API
      • Rastgele Kedi Resmi Gösteren API
      • Lokasyon
        • Ülkeler API
        • Şehirler API
      • T.C. Kimlik Doğrulama API
  • Hosting Solution
    • Cyberpanel
      • 500 Internal Server Hatası (Cyberpanel)
  • 🐻‍❄️LARAVEL
    • Laravel Projesi Oluşturma
    • Anasayfa Düzenleme ve Sayfa Ekleme
  • 🔳ERP TARAFI
    • ERP Nedir ?
    • ERP İş Süreçleri
    • Birimler
      • Üretim
      • Satış
      • Muhasebe
      • Stok Yönetimi
      • Mali Yönetimi
      • Müşteri Hizmetleri (Destek)
      • İnsan Kaynakları (Personel)
      • Proje Yönetimi
    • Kullanılan Terimler
      • Amortisman
  • 💻SQL Tarafı
    • Çalışmalar ve Notlar
      • Tablo Boyutlarını Öğrenme
      • Veritabanı Arası Sorgulama
      • Tabloların Satır Sayısını Bulma
      • Tablodaki Triggerları Açma&Kapatma
      • Tablo Bağlantısı (Tablo Bağlama)
      • Tabloların Satır Sayısını Bulma
    • Konular
      • Sorgulamalar
        • SELECT
        • FROM
        • WHERE
        • LIKE
        • JOINLER
          • INNER JOIN
          • FULL OUTER JOIN
          • RIGHT JOIN
          • LEFT JOIN
        • GROUP BY
        • HAVING
        • ORDER BY
        • LIMIT
        • COUNT
        • SUM
        • AVG
        • MIN
        • MAX
        • CASE
        • DISTINCT
        • SUBQUERY
        • SUBSTRING
        • TRUNCATE
      • String Fonksiyonlar
        • LEN
        • STRING_SPLIT
        • CHARINDEX
        • SUBSTRING
        • REPLACE
        • LOWER/UPPER
        • TRIM
        • LEFT/RIGHT
        • ASCII/CHAR
        • CONCAT
      • Zaman Fonksiyonları
        • DAY, MONTH, YEAR
        • DATEFROMPARTS
        • ISDATE
        • DATEADD
        • DATENAME
        • DATEPART
        • DATETIME
        • DATEDIFF
      • Matematiksel Fonksiyonlar
        • ROUND
        • FLOOR
        • DEGRESS
        • ACOS
        • ASIN
        • ATAN
        • ATN2
        • RAND
        • RAD
        • ABS/SIGN
        • FLOOR/CEILING
      • Döngüler
        • FOR
        • WHILE
      • Prosedür
        • Prosedür Nasıl Yazılır
      • Trigger
        • Triger Nasıl Yazılır
      • Index
        • Index Nasıl Yazılır
      • Cursor
        • Cursor Nasıl Yazılır
      • Fonksiyon Konuları
        • User Defined Functions
        • Aggregate Functions
      • Veritipleri ve Boyutları
      • İlişkisel Veritabanı
    • Dosyalar & Kaynaklar
      • SQL Veri Tipleri
      • T-SQL Join Tipleri
      • SQL Cheat Sheet
    • SQL Hataları ve Çözümleri
      • String or binary data would be truncated
      • Subquery returned more than 1 value.
      • Conversion failed when converting from a character string to uniqueidentifier
      • The multi-part identifier could not be bound
      • Arithmetic overflow error converting numeric to data type numeric
  • 💯ANADIL
    • Anadil Nedir ?
    • Çalışmalar ve Notlar
      • Cff
        • Cff İle Adını Alıp Kodunu Yazdırma
      • Şube Kodu İşaretlendiğinde ComboBox'ın Kapatılması.
      • Parametre İşaretlendiğinde TabSheet'te ki Grid'in kapatılması.
      • İf
        • İf İle Boş Kontrol
        • İf İle Uzunluk Kontrolü
      • Grid
        • Grid PushButton Kullanımı
        • Grid Oluşturma
      • Formdaki Gride Koşul Ekleme(FTC)
      • Yetki Servisi Çağırma
      • ComboList Doldurma
    • Kütüphane
      • RS32
        • Fonksiyonlar
          • BuildInsertStm
          • BuildDeleteStm
          • BuildSelectStm
          • BuildUpdateStm
          • PrepareStmDirect
          • ExecuteStmDirect
        • Metotlar
          • AddOrderBy
          • AddGroupBy
          • AppendToStm
      • CFF
        • Fonksiyonlar
        • Metotlar
      • Kontrol Nesneleri
        • ListBox ve ComboBox
          • AddToList
          • SelectTextInList
      • Diğer
        • IsNull
  • 🔬.NET TARAFI
    • .NET Nedir ?
    • Konular
      • Değişkenler
        • Boolean (Bool)
        • Byte
        • Char
        • Integer (INT)
        • Long
        • Single
        • Double
        • Decimal
        • String
        • Object
  • 😎PHP TARAFI
    • PHP Nedir ?
    • Konular
      • Temel Söz Dizimi
        • Değişkenler
        • Operatörler
        • Koşullar
        • Fonksiyonlar
        • Döngüler
        • Diziler
        • String İşlemleri
      • Form İşlemleri
        • Form Verilerini Alma
        • Form Verilerini Kontrol Etme
        • Form Verilerini İşleme
        • Form Alanlarına Ön Tanımlı Değerler Atama
        • Form Güvenliği
      • Veritabanı İşlemleri
        • Veritabanına Bağlanma
        • Veri Ekleme
        • Veri Sorgulama
        • Veri Güncelleme
        • Veri Silme
        • Veri Okuma
        • Transaksiyonlar
        • Veritabanı Bağlantılarını Yönetme
      • Sınıflar ve Nesneler
        • OOP İlkeleri
        • Autoloading
        • Ad alanları (Namespaces)
        • Statik Yöntemler ve Özellikler (Static Methods and Properties)
        • Soyut Sınıflar ve Yöntemler (Abstract Classes and Methods)
        • Arayüzler (Interfaces)
        • Miras (Inheritance)
        • Sınıflar ve Nesnelerin Temelleri
        • Kurucu Yöntemler
      • Güvenlik
        • SQL Enjeksiyonu
        • XSS (Cross-Site Scripting)
        • DoS (Denial of Service) Saldırıları
        • CSRF (Cross-Site Request Forgery)
        • Güvenli Parola Depolama
        • Dosya Yükleme
      • Dosya İşlemleri
      • API Entegrasyonları
        • API Nedir ?
        • RESTful API Nedir?
        • API İstekleri
        • API Yanıtları
        • API Entegrasyon Örnekleri
        • API Anahtarları
      • Framework
        • MVC Tasarım Deseni
        • Yönlendirme
        • Şablonlar
        • Veritabanı Erişimi
        • Güvenlik
        • API Entegrasyonları
        • Oturum Yönetimi
        • Test
        • Performans
        • Paket Yönetimi
  • 🎛️FRAMEWORK TARAFI
    • Framework Nedir?
    • Konular
      • Framework Türleri
      • Framework Avantajları ve Dezavantajları
      • Framework Kullanımı ve Örnekleri
      • Framework vs Kütüphane
      • Framework vs Platform
      • Framework vs API
      • Framework ve Tasarım Kalıpları
      • Framework ve MVC Mimari
      • Framework ve ORM
      • Framework ve Web Geliştirme
      • Framework ve Mobil Geliştirme
      • Framework ve Oyun Geliştirme
      • Framework ve Veri Bilimi
      • Framework ve Yapay Zeka
      • Framework Geliştirme Süreci
      • Framework Test Etme ve Hata Ayıklama
Powered by GitBook
On this page

Was this helpful?

  1. PHP TARAFI
  2. Konular
  3. Form İşlemleri

Form Verilerini Kontrol Etme

Form verilerinin kontrol edilmesi, kullanıcıların doğru ve geçerli verileri göndermesini sağlamak için önemlidir. Form verileri, önceden belirlenmiş bir dizi kurala göre doğru biçimde doldurulduğunda kabul edilir.

Aşağıda, form verilerini kontrol etmek için kullanılan bazı tekniklerin açıklaması ve örnekleri verilmiştir:

1. Boş Alan Kontrolü

Form alanlarından bir veya daha fazlasının boş bırakılması, formun kabul edilemez olduğu anlamına gelebilir. Bu nedenle, boş alanların kontrol edilmesi önemlidir. Bunun için, PHP'de empty() fonksiyonu kullanılır.

if (empty($_POST['username'])) {
  echo "Kullanıcı adı boş bırakılamaz.";
} else {
  // Kullanıcı adı alanı dolduruldu, işleme devam edilebilir.
}

2. Veri Türü Kontrolü

Form alanlarından alınacak verinin doğru türde olması gerektiği durumlarda, PHP'de is_numeric() veya is_string() gibi fonksiyonlar kullanılır.

if (!is_numeric($_POST['age'])) {
  echo "Yaş alanı sadece sayısal değerler içermelidir.";
} else {
  // Yaş alanı doğru şekilde dolduruldu, işleme devam edilebilir.
}

3. Veri Uzunluğu Kontrolü

Form alanlarından alınacak verinin belirli bir uzunluk aralığında olması gerektiği durumlarda, PHP'de strlen() fonksiyonu kullanılır.

if (strlen($_POST['password']) < 8) {
  echo "Şifreniz en az 8 karakter olmalıdır.";
} else {
  // Şifre alanı doğru şekilde dolduruldu, işleme devam edilebilir.
}

4. Veri Formatı Kontrolü

Form alanlarından alınacak verinin belirli bir formatta olması gerektiği durumlarda, PHP'de preg_match() fonksiyonu kullanılır.

if (!preg_match('/^[a-zA-Z0-9_]+$/', $_POST['username'])) {
  echo "Kullanıcı adı yalnızca harfler, sayılar ve alt çizgi içerebilir.";
} else {
  // Kullanıcı adı alanı doğru şekilde dolduruldu, işleme devam edilebilir.
}

Yukarıdaki örnek, kullanıcı adının yalnızca harfler, sayılar ve alt çizgi karakteri içerebileceğini belirtir.

Form verilerini kontrol etmek, web uygulamalarının güvenliği için önemlidir. Ancak, form verilerinin doğru ve güvenli bir şekilde işlenmesi, yalnızca form verilerini kontrol etmekle sınırlı değildir.

Form Verilerini Güvenli Hale Getirme

Form verilerini alırken, kullanıcının gönderdiği verilerin güvenli olmadığını ve manipüle edilebileceğini unutmamak önemlidir. Bu nedenle, form verilerini alırken ve işlerken güvenliğini sağlamak için bazı adımlar atmak gereklidir. Bu adımlar şunları içerebilir:

  • Gereksiz karakterleri filtreleme ve doğrulama: Verileri filtreleme, gereksiz karakterleri kaldırma ve doğrulama, güvenliği artırmaya yardımcı olur. Bu adımlar, özellikle sayısal girdiler için önemlidir. Örneğin, kullanıcının yalnızca sayısal karakterler girebileceği bir alan varsa, girdiyi kontrol etmek ve sadece sayıları geçerli olarak kabul etmek önemlidir.

  • Veri türü doğrulaması: Form verileri genellikle belirli bir veri türüne sahip olmalıdır. Örneğin, bir e-posta adresi, belirli bir formatta olmalıdır. Veri türü doğrulaması, bu gereksinimleri sağlamak için kullanılabilir.

  • SQL enjeksiyon saldırılarına karşı koruma: Form verilerinin veritabanına kaydedilmesi gerekiyorsa, SQL enjeksiyon saldırılarına karşı korunmak önemlidir. Bu, kullanıcı tarafından sağlanan verilerin güvenilirliğini sağlamak için güvenlik önlemlerinin alınmasını içerir.

Aşağıda, form verilerini güvenli hale getirmek için bir örnek gösterilmiştir:

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
  $username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
  $password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);
  
  // Veritabanı sorgusu için kullanılacak değişkenlerin hazırlanması
  $prepared_statement = $db->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
  $prepared_statement->bindParam(':username', $username);
  $prepared_statement->bindParam(':password', $password);
  $prepared_statement->execute();
  
  // Giriş işlemi başarılıysa
  if($prepared_statement->rowCount() > 0) {
    // Kullanıcıyı yönlendir
    header('Location: dashboard.php');
    exit;
  } else {
    $error_message = "Hatalı kullanıcı adı veya şifre";
  }
}
?>

Bu örnekte, filter_input() fonksiyonu kullanılarak kullanıcı adı ve şifre değişkenleri temizleniyor. Ardından, SQL enjeksiyon saldırılarına karşı korumak için hazırlanmış bir veritabanı sorgusu yapılıyor. Bu sorgu, önceden hazırlanmış ifadeler, veritabanına yerleştirilecek değerlerin yerini belirlemek için kullanılır. Bu değerler kullanıcı tarafından sağlandığı için, SQL enjeksiyonu gibi kötü amaçlı saldırılara karşı koruma sağlamak için bu yöntem önerilir.

Örneğin, aşağıdaki kod örneği, kullanıcının adını ve şifresini içeren bir formdan veri alır ve veritabanına kaydeder. Kaydetmeden önce, gelen veriler "filter_input()" fonksiyonu kullanılarak temizlenir ve hazırlanmış ifadeler kullanılarak SQL enjeksiyonuna karşı koruma sağlanır:

// kullanıcı adı ve şifre değişkenlerini $_POST dizisinden al
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);

// veritabanına bağlan
$servername = "localhost";
$dbname = "myDB";
$username = "username";
$password = "password";
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

// veritabanına ekle
$stmt = $conn->prepare("INSERT INTO users (username, password) VALUES (:username, :password)");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();

Bu örnekte, "filter_input()" fonksiyonu kullanılarak, "INPUT_POST" parametresi ile $_POST dizisinden gelen veriler filtreleniyor. Bu, gelen verilerin temizlenmesine ve güvenli hale getirilmesine yardımcı olur.

Daha sonra, "PDO" nesnesi kullanılarak veritabanına bağlanılıyor ve hazırlanmış ifadeler kullanılarak "INSERT INTO" sorgusu oluşturuluyor. Bu sorguda, "bindParam()" fonksiyonu kullanılarak, sorguya yerleştirilecek olan değişkenler belirleniyor. Bu sayede, SQL enjeksiyonuna karşı koruma sağlanmış oluyor.

Son olarak, "execute()" fonksiyonu kullanılarak sorgu çalıştırılıyor ve veriler veritabanına kaydediliyor.

Last updated 2 years ago

Was this helpful?

😎