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
İşe Yarayacak PHP Fonksiyonları ve Örnekleri

PHP

Günümüzde, birçok web geliştiricisi PHP dilini kullanarak web siteleri oluşturma işlemlerinde sıkça karşılaşılan sorunların üstesinden gelirler. Bunun için ise..

Devamını Oku
Blog Resim
PHP Nedir? PHP Avantajları ve SEO

PHP

PHP, Hypertext Preprocessor teriminin kısaltmasıdır. Web geliştirme ve programlama dilidir. Sunucu taraflı (backend) bir dil olarak tanımlanır.

Devamını Oku
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 Dersleri 2: Temel Sözdizimi ve Değişkenler

PHP

PHP, web geliştirme alanında sıkça kullanılan bir sunucu taraflı betik dildir. Bu dersimizde, PHP'nin temel sözdizini ve değişkenlerini öğreneceğiz. Bu, PHP programlamaya başlamak için temel bir adımdır.

Devamını Oku