- Mesaj
- 736
- Çözümler
- 55
- Beğeni
- 1.497
- Puan
- 1.179
- Ticaret Puanı
- 0
Merhaba ,
Açıklayacağım php kodlarını nasıl kullanacağınız hakkında bilgi sahibi olmanız için ileri seviye php bilginiz olması gerekmektedir. Kodları ve anlamlarını detaylı şekilde açıklayacağım. Standart bir panel için gerekli olan kodlar bunlardır. İyi bir panel için bu kodlar size örnek olacaktır.
Bu kod account tablosu haricinde farklı tablolarda çalışmak için gerekli olan koddur.Yani biz mysql bağlantısını gerçekleştirirken table kısmında accountu seçmekteyiz.Ancak hesap sayfası oluşturacaksanız "tabloadı" kısmını "player" olarak değiştirirseniz player tablosu için kodları çalıştırabilirsiniz.
Bu fonksiyon sitenize gelecek olan sql injection ataklarından korunmak için gerekmektedir.
Saldırganlar doğrudan url üzerinden gelen get methodu ve post methodu ile havij v.b programlar gibi sitenize saldırıp bağlantılı olan veritabanına bağlanabilir ve değişiklik yapabilirler.Bu kodu her sayfanıza include ederseniz bu tür ataklardan korunabilirsiniz.
Her sayfada çağırdığınız bir dosyanın içine include edebilirsiniz.
Üye kayıt sistemi gerçekleşir.
Son 5 dakika içinde aktif olan kullanıcı sayısını gösterir hiç bir oyuncu yok ise sayıyı 1 olarak gösterir.
Bu kod ile en yüksek levele sahip 10 oyuncuyu listelettik.
Player tablonuza yetkidurum diye bir sütun ekleyip gm olan karakterlere 1 değerini verirseniz bu sıralamada görünmeyeceklerdir.
Açıklayacağım php kodlarını nasıl kullanacağınız hakkında bilgi sahibi olmanız için ileri seviye php bilginiz olması gerekmektedir. Kodları ve anlamlarını detaylı şekilde açıklayacağım. Standart bir panel için gerekli olan kodlar bunlardır. İyi bir panel için bu kodlar size örnek olacaktır.
Veritabanı seçim kodu:
mysql_select_db("tabloadı");
Güvenlik Fonksiyonu:
function g ($get) {
return htmlspecialchars(mysql_real_escape_string($_GET[$get]));
} // GET verilerinden gelecek sql injection saldırılarını önlemek için
function p ($post) {
return htmlspecialchars(mysql_real_escape_string($_POST[$post]));
} // POST verilerinden gelecek sql injection saldırılarını önlemek için
Saldırganlar doğrudan url üzerinden gelen get methodu ve post methodu ile havij v.b programlar gibi sitenize saldırıp bağlantılı olan veritabanına bağlanabilir ve değişiklik yapabilirler.Bu kodu her sayfanıza include ederseniz bu tür ataklardan korunabilirsiniz.
İnclude nedir ?:
// İnclude bir dosyayı başka bir dosya içinde çağırmaktır.
<?php include("mmotutkunlari.php"); ?>
config:
$vt_host = "localhost"; // Doğrudan server ip adresini giriniz.
$vt_kullanici = "root"; // Genelde root olarak kullanılır
$vt_sifre = "123456"; // Mysql şifreniz (navicat şifresi)
$vt_adi = "account"; // Account tablosunu seçiyoruz.Diğer tablolar için yukarda verdiğim kod ile işinizi görebilirsiniz.
//Veritabanı bağlantısını yapıyoruz
$vtbaglan = @mysql_connect($vt_host,$vt_kullanici,$vt_sifre) or die("Veritabanı bağlantısı sağlanamadı!");
mysql_select_db($vt_adi,$vtbaglan) or die("Veritabanı bulunamadı!");
@mysql_query("SET NAMES 'latin5'"); //MySQL Türkçe Karakter Sorunu
Kayıt Sayfası:
include("config.php");
$page = g('page'); // Get methodu ile page adında bir değişken tanımlıyoruz
switch($page){
case "uyeol": // URL ile page değişkenine uyeol adında bir değişken gelir ise bu kodları çalıştır diyoruz
$login = p('login');
$password = p('password'); // Burda metin2 mysqllarında kullanılan bir şifreleme methodunu aktif ediyoruz.
$email = p('email');
$phone1 = p('phone1');
$social_id = "1234567";
$question1 = "1";
$answer1 = "3751695c17afed4055a7a5ad5d46f6f5";
$real_name = "Your Name";
$usersession = "9ju1kjbmg4l4qml1g1gu26qlo3";
$web_aktiviert = "OK";
mysql_select_db("account"); // Yukarıdada belirttiğimiz gibi account tablosunu seçtiriyoruz
$result = mysql_query("SELECT * FROM account WHERE login LIKE '$login'"); // hesap adının varlığını kontrol ediyoruz
$bulunan=0;
while($r=mysql_fetch_array($result))
{
$bulunan++;
$login=$r["login"];
}
if ($bulunan==0){ // Eğer bu hesap adı daha önce başka birisi tarafından kullanılmamış ise kayıt işlemine izin veriyoruz.
$ekle = mysql_query("INSERT INTO account SET login = '".$login."', email = '".$email."', web_aktiviert = '".$web_aktiviert."', usersession = '".$usersession."', real_name = '".$real_name."', answer1 = '".$answer1."', phone1 = '".$phone1."', social_id = '".$social_id."', question1 = '".$question1."', password = PASSWORD('".$password."')");
if($ekle){
echo '
Hesap Başarıyla Oluşturuldu !Artık oyuna girip maceraya katılabilirsin !
';
} // Kayıt işlemi gerçekleştirilir ise bunu oyuncuya bildirilmesini sağlıyoruz.
else{
echo "
Teknik bir arıza sebebi ile işlem gerçekleştirilemedi...Lütfen daha sonra tekrar deneyiniz.
"; // Teknik bir hata var ise bildiriyoruz.
}}
else{
echo ' Böyle bir hesap zaten var ! ';} // Kullanıcı adı daha önce alındı ise bunu bildiriyoruz.
break;} // Sayfanın daha hızlı çalışması için işlemler bittikten sonra break komutu ile işlemleri durduruyoruz.
Online Oyuncu Sayısını Göstermek:
include("config.php");
mysql_select_db("player");
$output = mysql_query("SELECT COUNT(*) as count FROM player WHERE DATE_SUB(NOW(),INTERVAL 5 MINUTE) < last_play;");
$online_count = mysql_fetch_object($output)->count+1;
echo "Online Oyuncu: $online_count";
Sıralama:
include("config.php");
mysql_select_db("player"); // Player tablosunda işlem yapacağımızı belirtiyoruz
$sirabul = mysql_query("SELECT * FROM player ORDER BY level DESC limit 0,10"); // Levele göre sıralatıp en yüksek levele sahip 10 oyuncuyu gösteriyoruz 10 sayısını değiştirebilirsiniz.
while($cek=mysql_fetch_array($sirabul)){
$id = $cek['id'];
$name = $cek['name']; // Karakterin Adı
$level = $cek['level']; // Leveli
$job = $cek['job']; // Karakter türü
$playtime = $cek['playtime']; // Oyun süresi
$yetkidurum = $cek['yetkidurum']; // GM değişkeni bunu aşağıda açıklayacağım
if($yetkidurum == "0"){
$yetkidurum = "";
}
else{ $yetkidurum = "display:none;";
} // Yetki durum değişikenini aşağıda açıklıyacağım
if($job == "0"){
$karakteri = 'Savaşçı';
}
if($job == "7"){
$karakteri = 'Şaman';
}
if($job == "5"){
$karakteri = 'Sura';
}
if($job == "2"){
$karakteri = 'Ninja';
}
if($job == "8"){
$karakteri = 'Lycan';
}
else
{
} // Burada player tablosundaki job sütunu ile karakterlerin türlerini belirledik.
echo '
Adı :'.$name.'
Leveli :'.$level.'
Oyun Süresi :'.$playtime.'
Karakteri :'.$karakteri.'
';
}
Player tablonuza yetkidurum diye bir sütun ekleyip gm olan karakterlere 1 değerini verirseniz bu sıralamada görünmeyeceklerdir.
Lonca Sayısı:
include("config.php");
mysql_connect($dbhost$dbuser$dbpass);
mysql_select_db("player");
$guilds ="SELECT * FROM guild";
$guildsquery = mysql_query($guilds);
$guildanzahl = mysql_num_rows ($guildsquery);
echo "Gilden : $guildanzahl";
İtem Sayısı:
include("config.php");
mysql_connect($dbhost$dbuser$dbpass);
mysql_select_db("player");
$items = "SELECT * FROM item ";
$itemsquery = mysql_query($items);
$itemanzahl = mysql_num_rows($itemsquery);
echo "Items : $itemanzahl";
Kullanıcı Id Ve Hesap Sayısı:
include("config.php");
mysql_connect($dbhost$dbuser$dbpass);
mysql_select_db("account");
$accs = "SELECT * from account";
$accsquery = mysql_query($accs);
$accszahl = mysql_num_rows($accsquery);
echo "Account : $accszahl";
Karakter Sayısı:
include("config.php");
mysql_connect($dbhost$dbuser$dbpass);
mysql_select_db("player");
$chars = "SELECT * from player";
$charsquery = mysql_query($chars);
$charszahl = mysql_num_rows($charsquery);
echo "Charaktere : $charanzahl";
Son düzenleme: