- 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
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.
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.
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.
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.
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.
- Katılım
- 8 Eki 2017
- Konular
- 2,420
- Mesajlar
- 10,263
- Çözüm
- 89
- Online süresi
- 4mo 8h
- Reaksiyon Skoru
- 4,207
- Altın Konu
- 244
- Başarım Puanı
- 422
- MmoLira
- 7,171
- DevLira
- 15
paylaşım için teşekkürler
- 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
Rica ederim.paylaşım için teşekkürler
- Katılım
- 28 Tem 2018
- Konular
- 23
- Mesajlar
- 464
- Çözüm
- 3
- Online süresi
- 1mo 22d
- Reaksiyon Skoru
- 141
- Altın Konu
- 0
- Başarım Puanı
- 108
- MmoLira
- 1,364
- DevLira
- 3
Teşekkürler.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 21
- Görüntüleme
- 1K
- Cevaplar
- 3
- Görüntüleme
- 85