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
PHPMailer İletişim Formu Mail Gönderme Kodları

PHP

PHP, web geliştirme için oldukça popüler bir programlama dilidir. PHP, internet sayfalarının dinamikleştirilmesinde etkilidir ve birçok web projesinde kullanılır.

Devamını Oku
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 ile Admin Paneli Yapmak -1 Giriş Sayfası Oluşturma

PHP

Merhabalar! PHP kullanarak web sitemizin admin panelini oluşturacağız, ilk olarak admin giriş sayfasını oluşturacağız ve backend ayarlamalarını yapacağız. Örnekleriyle beraber kullanımlar aşağıda yer almaktadır.

Devamını Oku
Blog Resim
PHP ile Admin Paneli Yapmak -2 Ana Sayfa Yapısı ve Çıkış İşlemi

PHP

Bu derste, admin panelinin ana sayfasını (dashboard) oluşturduk ve bir logout (çıkış) fonksiyonu ekledik. Detaylıca anlatarak, temel bir admin paneli yapısının nasıl oluşturulduğunu göstereceğiz.

Devamını Oku