PHP ile Giriş ve Kayıt Formlarını Veritabanına İşlemek

Blog Gönderisi Resmi

Hizmetlerimiz hakkında bilgi almak için tıklayın.

Daha önce HTML yapılarını oluşturduğumuz Login form ile Register form'a PHP'de veritabanında işlem sağlamak için gerekli işlevselliği ekleyeceğiz.

Daha önce oluşturduğumuz Login Form HTML Yapısı -> Login Form

Daha önce oluşturduğumuz Register Form HTML Yapısı -> Register Form

Daha önceden HTML yapılarımızda oluşturduğumuz HTML formlarının action bölümünde bulunan register.php ve submit-your-login-form.php işlevselliğini sağlayalım, bunu sağlamak için ilk önce bilgileri saklayacağımız ve kontrol edeceğimiz bir veritabanına ihtiyacımız var.

Veritabanı Oluşturma


Öncelikle, kullanıcı bilgilerini saklamak için basit bir veritabanı yapısı gereklidir. MySQL kullanarak users adında bir tablo oluşturabiliriz:


CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    password VARCHAR(255) NOT NULL
);

Yukarıda SQL sorgularını kullanarak oluşturabileceğimiz bir users tablo örneği verilmiştir.

Bu tablo, kullanıcının adı, e-posta adresi ve şifresini saklayacaktır. Şifre, güvenlik nedeniyle hash'lenmiş olarak saklanmalıdır.

Ardından, kullanıcıların bilgilerini burada saklayabilmek için ilk önce kayıt olma işlevselliğini sağlayalım, yani register.php'yi oluşturalım.

Örnek HTML:


<form action="register.php" method="post">
    <input type="text" name="username" placeholder="Kullanıcı Adı" required>
    <input type="email" name="email" placeholder="E-posta" required>
    <input type="password" name="password" placeholder="Şifre" required>
    <button type="submit">Kayıt Ol
</form>

PHP register.php Kodu:


<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST["username"];
    $email = $_POST["email"];
    $password = password_hash($_POST["password"], PASSWORD_DEFAULT); // Şifreyi hash'leme

    // Veritabanı bağlantısı
    $conn = new mysqli("servername", "username", "password", "database");

    if ($conn->connect_error) {
        die("Bağlantı hatası: " . $conn->connect_error);
    }

    $sql = "INSERT INTO users (username, email, password) VALUES (?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("sss", $username, $email, $password);
    $stmt->execute();

    if ($stmt->affected_rows > 0) {
        echo "Kayıt başarılı!";
    } else {
        echo "Hata: " . $conn->error;
    }

    $stmt->close();
    $conn->close();
}
?>

Bu dosya, kullanıcıların kayıt olmasını sağlar. Kullanıcı adı, e-posta ve şifre bilgilerini alır, şifreyi hash'ler ve veritabanına kaydeder.

Bu dosya üzerinde düzenlemeniz gereken bölüm aşağıda verilmiştir.


$conn = new mysqli("servername", "username", "password", "database");

Yukarıda bulunan bölümleri, kendi bilgilerinize göre düzenleyin. Kullandığınız server'in adı, kullandığınız serverin giriş bilgileri ve tablo bilgilerinden oluşur.

PHP Giriş Form


Veritabanımızda users tablomuzu oluşturduk, kullanıcıların başarıyla kayıt olmalarını sağladık, şimdi ise kullanıcıların web sitemize giriş yapmalarını sağlamalıyız.

Örnek HTML:


<form action="submit-your-login-form.php" method="post">
    <input type="text" name="username" placeholder="Kullanıcı Adı" required>
    <input type="password" name="password" placeholder="Şifre" required>
    <button type="submit">Giriş Yap</button>
</form>

PHP Kodu submit-your-login-form.php


<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST["username"];
    $password = $_POST["password"];

    // Veritabanı bağlantısı
    $conn = new mysqli("servername", "username", "password", "database");

    if ($conn->connect_error) {
        die("Bağlantı hatası: " . $conn->connect_error);
    }

    $sql = "SELECT id, password FROM users WHERE username = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("s", $username);
    $stmt->execute();
    $result = $stmt->get_result();

    if ($result->num_rows > 0) {
        $row = $result->fetch_assoc();
        if (password_verify($password, $row["password"])) {
            echo "Giriş başarılı!";
        } else {
            echo "Hatalı şifre!";
        }
    } else {
        echo "Kullanıcı bulunamadı!";
    }

    $stmt->close();
    $conn->close();
}
?>

Bu dosya, kullanıcıların giriş yapmasını sağlar. Kullanıcı adı ve şifre kontrol edilir, doğruysa giriş başarılı bir şekilde gerçekleştirilir.

Girişler başarılı olduktan sonra, sayfalarda giriş yapmayı kontrol eden session_start() işlevlerinin çağırıldığından emin olun.

Güvenlik Notları:


  1. Kullanıcı şifreleri, password_hash fonksiyonu ile güvenli bir şekilde hash'lenir.
  2. Bu örnekler, temel bir anlayış için tasarlanmıştır. Gerçek bir uygulama için daha kapsamlı güvenlik önlemleri alınmalıdır.
  3. SQL enjeksiyonuna karşı korunmak için hazırlanmış ifadeler (prepared statements) kullanılır.
  4. Gerçek bir uygulamada, HTTPS kullanarak veri iletimini şifrelemek önemlidir.

Sizin İçin Önerdiklerimiz

Blog Resim
PHP Dersleri 4: PHP ile Veritabanı Bağlantısı Kurmak (MYSQL)

PHP

Bağlantı kurmak için genellikle PDO (PHP Data Objects) kullanılır. PDO, farklı veritabanı sistemleriyle çalışabilen ve güvenlik önlemlerini içeren bir veritabanı bağlantı arayüzüdür.

Devamını Oku
Blog Resim
PHP ve JavaScript ile Veritabanından Veri Çekip İşlemek

PHP

Merhabalar! Bu bölümümüzde veritabanından veri çeken bir PHP kodu ve veriyi çeken PHP koduna istek yaparak çekilen veriyi HTML dosyamıza ekleyen bir JavaScript kodu yazacağız.

Devamını Oku
Blog Resim
PHP ile Giriş ve Kayıt Formlarını Veritabanına İşlemek

PHP

Daha önce HTML yapılarını oluşturduğumuz Login form ile Register form'a PHP'de veritabanında işlem sağlamak için gerekli işlevselliği ekleyeceğiz.

Devamını Oku
Blog Resim
PHP Dersleri 3: Tüm PHP Hatalarını Görüntülemek: Temel ve Gelişmiş Kullanım

PHP

Bir PHP uygulaması, yürütülmesi sırasında birçok farklı düzeyde uyarı ve hata üretebilir. Bu hataları görmek, hatalı çalışan bir uygulamada sorun giderirken geliştiriciler için çok önemlidir.

Devamını Oku