index.php

<!DOCTYPE html>
<html>
<head>
    <title>Kullanıcı Kayıt ve Giriş</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
    <div class="container mt-5">
        <div class="row">
            <div class="col-md-6">
                <h2>Kayıt Ol</h2>
                <form action="register.php" method="post">
                    <div class="form-group">
                        <label for="username">Kullanıcı Adı:</label>
                        <input type="text" class="form-control" id="username" name="username" required>
                    </div>
                    <div class="form-group">
                        <label for="password">Şifre:</label>
                        <input type="password" class="form-control" id="password" name="password" required>
                    </div>
                    <button type="submit" class="btn btn-primary">Kayıt Ol</button>
                </form>
            </div>
            <div class="col-md-6">
                <h2>Giriş Yap</h2>
                <form action="login.php" method="post">
                    <div class="form-group">
                        <label for="username">Kullanıcı Adı:</label>
                        <input type="text" class="form-control" id="username" name="username" required>
                    </div>
                    <div class="form-group">
                        <label for="password">Şifre:</label>
                        <input type="password" class="form-control" id="password" name="password" required>
                    </div>
                    <button type="submit" class="btn btn-primary">Giriş Yap</button>
                </form>
            </div>
        </div>
    </div>
</body>
</html>
register.php

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

    // Veritabanı bağlantısını yapın (örn. MySQLi veya PDO kullanabilirsiniz)
    // Burada veritabanı bağlantısını kurmanız gerekecektir.

    // Örnek olarak MySQLi kullanımı:
    $servername = "localhost";
    $db_username = "your_username";
    $db_password = "your_password";
    $dbname = "your_database";

    $conn = new mysqli($servername, $db_username, $db_password, $dbname);

    // Bağlantı hatasını kontrol edin
    if ($conn->connect_error) {
        die("Veritabanına bağlanılamadı: " . $conn->connect_error);
    }

    // Kullanıcı adının benzersiz olduğunu kontrol edin
    $check_query = "SELECT * FROM users WHERE username = '$username'";
    $result = $conn->query($check_query);

    if ($result->num_rows > 0) {
        echo "Bu kullanıcı adı zaten alınmış.";
    } else {
        // Şifreyi şifreleyin (örn. bcrypt kullanabilirsiniz)
        // Ayrıca, SQL enjeksiyonlarından korumak için parametreleri bağlayarak sorgular yapmak önemlidir.
        // Örnek olarak PDO kullanımı:
        // $hashed_password = password_hash($password, PASSWORD_BCRYPT);
        // $query = $conn->prepare("INSERT INTO users (username, password) VALUES (:username, :password)");
        // $query->bindParam(':username', $username);
        // $query->bindParam(':password', $hashed_password);
        // $query->execute();

        // Örnek olarak MySQLi kullanımı:
        $hashed_password = password_hash($password, PASSWORD_DEFAULT);
        $insert_query = "INSERT INTO users (username, password) VALUES ('$username', '$hashed_password')";

        if ($conn->query($insert_query) === TRUE) {
            echo "Kayıt başarılı. Giriş yapabilirsiniz.";
        } else {
            echo "Kayıt sırasında bir hata oluştu: " . $conn->error;
        }
    }

    // Veritabanı bağlantısını kapatın
    $conn->close();
}
login.php

session_start();

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

    // Veritabanı bağlantısını yapın (örn. MySQLi veya PDO kullanabilirsiniz)
    // Burada veritabanı bağlantısını kurmanız gerekecektir.

    // Örnek olarak MySQLi kullanımı:
    $servername = "localhost";
    $db_username = "your_username";
    $db_password = "your_password";
    $dbname = "your_database";

    $conn = new mysqli($servername, $db_username, $db_password, $dbname);

    // Bağlantı hatasını kontrol edin
    if ($conn->connect_error) {
        die("Veritabanına bağlanılamadı: " . $conn->connect_error);
    }

    // Kullanıcıyı veritabanından sorgulayın
    $check_query = "SELECT * FROM users WHERE username = '$username'";
    $result = $conn->query($check_query);

    if ($result->num_rows == 1) {
        $row = $result->fetch_assoc();
        $hashed_password = $row["password"];

        // Şifreyi doğrulayın (örn. password_verify ile bcrypt ile karşılaştırma yapabilirsiniz)
        // Örnek olarak PDO kullanımı:
        // if (password_verify($password, $hashed_password)) {
        //     // Giriş başarılı, oturumu başlatın ve ana sayfaya yönlendirin
        //     $_SESSION["username"] = $username;
        //     header("Location: index.php");
        //     exit();
        // }

        // Örnek olarak MySQLi kullanımı:
        if (password_verify($password, $hashed_password)) {
            // Giriş başarılı, oturumu başlatın ve ana sayfaya yönlendirin
            $_SESSION["username"] = $username;
            header("Location: index.php");
            exit();
        } else {
            echo "Giriş başarısız. Kullanıcı adı veya şifre yanlış.";
        }
    } else {
        echo "Giriş başarısız. Kullanıcı adı veya şifre yanlış.";
    }

    // Veritabanı bağlantısını kapatın
    $conn->close();
}
Kaynak: ChatGPT