Blokowanie IP/Gracza

Antoni Kwapisz
05.09.2015

Słowem wstępu W każdej grze prędzej czy później trafi się użytkownik uprzykrzający innym zabawę. Jak sobie z nim wtedy poradzić? Możemy na przykład zablokować jego adres IP lub konto w grze.

Przygotowujemy bazę danych
Przydadzą nam się dwie tabele - konta oraz banned - ta pierwsza zawierać będzie konta graczy a ta druga zbanowane adresy IP. Tabelę konta rozszerzamy o pole banned nadając mu typ bool a jako wartość domyślną wpisujemy 0. Tworzymy nową tabelę banned następującym zapytaniem

KOD
CREATE TABLE `banned` (
    `ID` INT NOT NULL ,
    `IP` VARCHAR( 15 ) NOT NULL
) ENGINE = MYISAM



Przygotowujemy nasz kod
Tworzymy plik o przykładowej nazwie isBanned.php, który będzie sprawdzał kilka rzeczy. Po pierwsze, sprawdzi czy gracz jest zbanowany. Po drugie sprawdzi czy IP gracza jest zbanowane. Plik powinniśmy dołączyć oczywiście do naszej gry za pomocą funkcji include() lub innej podobnej.
 

KOD
<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('viawww');
function getIP(){ // Tworzymy funkcje sprawdzajaca prawdziwe IP uzytkownika
    if ($_SERVER['HTTP_X_FORWARDED_FOR']){
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    if (ip2long($ip) === false) $error = true;
            return ($error) ? false : $ip;
}
$isBannedIP = mysql_query("select `ID` from `banned` where `IP` = '".getIP()."'"); // Zapytanie sprawdzajace czy IP jest zbanowane
if(mysql_num_rows($isBannedIP) != 0){ // Jesli w tabeli widnieje wpis z IP uzytkownika
    die('Twoje IP jest zablokowane');
} else {
    $isBannedUser = mysql_query("select `banned` from `konta` where `ID` = '".$_SESSION['ID']."'"); // Zapytanie sprawdzajace status konta gracza
    $isBanned = mysql_fetch_array($isBannedUser);
    if($isBanned['banned'] == 1){ // Jesli konto jest zablokowane
        die('Twoje konto zostało zablokowane');
    }
}
?>



Jeśli uważasz, że nie powinno się używać HTTP_X_FORWARDED_FOR, ponieważ proxy może tam władować co chce, to wiedz, że lepiej mieć IP proxy zamiast - możliwe, że - prawdziwego IP (ofc nie zawsze będzie to IP prawdziwe ale w większości przypadków tak), z którego to może się łączyć więcej niż 1 osoba.

Zgłoś swój pomysł na artykuł

Więcej w tym dziale Zobacz wszystkie