Web Site Ban Paneli Oluşturma

bLastX

www.blastx.work
Katılım
3 Eki 2017
Konular
1,673
Mesajlar
18,445
Çözüm
48
Online süresi
9mo 24d
Reaksiyon Skoru
8,721
Altın Konu
297
Başarım Puanı
374
MmoLira
41,550
DevLira
753
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ 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.​
 
paylaşım için teşekkürler
 
Teşekkürler.
 

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