Bvural41 1
Bvural41
OnurBoyla 1
OnurBoyla
noisiv 1
noisiv
Manwe Work 1
Manwe Work
farkmt2official 1
farkmt2official
mavzermete 1
mavzermete
dreamstone 1
dreamstone
Hikaye Ekle

Web Site Ban Paneli Oluşturma

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Bir web tabanlı yönetim paneli üzerinden Metin2 gibi bir oyunda oyuncuları banlamak ve IP adreslerini öğrenmek için PHP ve MySQL kullanmanız gerekecek. Bu, oyunun backend sistemine entegre olarak çalışacak bir yönetim paneli oluşturmanıza olanak tanır.

Bu panelde şunlar yapılabilir:

Oyuncuları Banlamak: Web paneli üzerinden oyuncuların hesaplarını banlamak.
IP Adreslerini Görüntülemek: Oyuncuların IP adreslerini görmek.​

Veritabanı Yapısı

Öncelikle, oyununuzun veritabanında bir oyuncu tablosu bulunmalıdır. Bu tabloda oyuncuların kullanıcı adı, IP adresi ve ban durumu gibi bilgileri saklamalıyız. Aşağıda bir örnek veritabanı yapısını görebilirsiniz:

SQL:
CREATE TABLE players (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) NOT NULL,
    ip_address VARCHAR(15) NOT NULL,
    is_banned BOOLEAN DEFAULT 0
);

PHP Kodu (Panel İşlevselliği)

Bu örnek, bir oyuncuyu banlamak ve IP adresini görmek için basit bir panel işlevselliği sağlar.

index.php - Ana Panel Sayfası:

PHP:
<?php
// Veritabanı bağlantısı
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "metin2_game"; // Veritabanı ismini buraya yazın

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Oyuncuları veritabanından çekme
$sql = "SELECT * FROM players";
$result = $conn->query($sql);

// Oyuncu banlama işlemi
if (isset($_POST['ban_id'])) {
    $ban_id = $_POST['ban_id'];
    $sql_ban = "UPDATE players SET is_banned = 1 WHERE id = $ban_id";
    if ($conn->query($sql_ban) === TRUE) {
        echo "Oyuncu başarıyla banlandı.";
    } else {
        echo "Hata: " . $conn->error;
    }
}

// Veritabanı bağlantısını kapatma
$conn->close();
?>

<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>bLastX Paneli</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>

    <div class="panel">
        <h1>bLastX Yönetim Paneli</h1>

        <h2>Oyuncular Listesi</h2>
        <table>
            <thead>
                <tr>
                    <th>Oyuncu Adı</th>
                    <th>IP Adresi</th>
                    <th>Durum</th>
                    <th>Banla</th>
                </tr>
            </thead>
            <tbody>
                <?php
                // Veritabanından oyuncu bilgilerini listeleme
                $conn = new mysqli($servername, $username, $password, $dbname);
                $sql = "SELECT * FROM players";
                $result = $conn->query($sql);

                if ($result->num_rows > 0) {
                    while($row = $result->fetch_assoc()) {
                        $ban_status = $row['is_banned'] ? 'Banlı' : 'Aktif';
                        echo "<tr>
                                <td>{$row['username']}</td>
                                <td>{$row['ip_address']}</td>
                                <td>$ban_status</td>
                                <td>
                                    <form method='POST'>
                                        <button type='submit' name='ban_id' value='{$row['id']}'>Banla</button>
                                    </form>
                                </td>
                            </tr>";
                    }
                } else {
                    echo "<tr><td colspan='4'>Hiç oyuncu bulunamadı.</td></tr>";
                }

                $conn->close();
                ?>
            </tbody>
        </table>
    </div>

</body>
</html>

CSS Kodu (Panel Tasarımı)
Panelin görsel tasarımını basitçe düzenlemek için aşağıdaki CSS kodlarını kullanabilirsiniz.

CSS:
body {
    font-family: Arial, sans-serif;
    background-color: #f4f4f4;
    margin: 0;
    padding: 0;
}

.panel {
    width: 80%;
    margin: 20px auto;
    background-color: #fff;
    padding: 20px;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}

h1, h2 {
    text-align: center;
}

table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 20px;
}

table th, table td {
    border: 1px solid #ddd;
    padding: 10px;
    text-align: center;
}

table th {
    background-color: #f1f1f1;
}

button {
    background-color: #e74c3c;
    color: white;
    border: none;
    padding: 5px 10px;
    cursor: pointer;
    border-radius: 5px;
}

button:hover {
    background-color: #c0392b;
}

PHP İşlevselliği
Oyuncu Banlama: Bir oyuncu "Banla" butonuna tıkladığında, oyuncunun is_banned sütunu veritabanında 1 olarak güncellenir.
IP Adreslerini Görüntüleme: Oyuncuların IP adresleri veritabanından alınarak, tabloya sırasıyla listelenir.​

Güvenlik Uyarıları

SQL Enjeksiyonları: Bu örnekte PHP veritabanı işlemleri için hazır ifadeler (prepared statements) kullanmamışız. Gerçek bir projede, SQL enjeksiyonlarına karşı güvenliği sağlamak için prepared statements kullanmalısınız.
Yetkilendirme: Yönetim panelinin sadece yetkilendirilmiş kullanıcılar tarafından erişilmesi gerektiğinden, kullanıcı girişi ve oturum yönetimini de eklemeniz gerekecek.​

Ekstra Özellikler

IP Adresi Engelleme: IP adreslerini engellemek için, IP adresinin veritabanında saklanmasını sağlayarak, ban_ip_address gibi bir sütun ekleyebilirsiniz.
Gelişmiş Banlama: Banlanan oyuncunun yalnızca hesabını değil, IP adresini de engellemeyi sağlayacak bir sistem ekleyebilirsiniz.​

Kullanıcı Arayüzü ve İşlevsellik

Panelde, veritabanındaki oyuncuları listeledik, her oyuncu için bir "Banla" butonu ekledik.
Bu, basit bir panel işlevselliği sağlar ancak kullanıcı girişi, güvenlik, AJAX gibi daha gelişmiş özellikleri zaman içinde ekleyebilirsiniz.​
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst