Sistem BANIP
Salutare, astazi vom invata cum se facem un sistem de BANIP pentru site-ul nostru. Sa incepem.
Prima data avem nevoie de o baza de date MySql. Eu deja am facut baza de date, tot ce mai ramane este sa facem tabelul unde se vor salva datele.
Pentru a crea tabelul vom executa urmatoarea comanda SQL:
1 2 3 4 5 6 |
CREATE TABLE IF NOT EXISTS `banip` ( `id` int(250) NOT NULL AUTO_INCREMENT, `ip` text NOT NULL, `motiv` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; |
Dupa care incepem sa scriem codurile pentru fisierul care verifica daca utilizatorul este banat sau nu.
Prima data avem nevoie de o variabila care ne spune adresa IP a vizitatorului:
1 |
$ip = $_SERVER['REMOTE_ADDR']; |
Acum, vom efectua conectarea la serverul MySql folosind urmatoarea functie PHP:
1 |
$mysqli = mysqli_connect("LOCALHOST","ROOT","PASSWORD","BANIP"); |
LOCALHOST – Adresa server MySql, de obicei este localhost.
ROOT – Utilizatorul prin intermediul caruia scriptul se conecteaza la serverul MySql.
PASSWORD – Parola utilizatorului MYSQL
BANIP – Numele bazei de date, in cazul nostru BANIP.
Acum vom continua cu variabila care obtine datele necesare pentru verificari, in cazul nostru daca utilizatorul este pe lista de banati sau nu.
1 2 |
$verifica_status_ban_query = $mysqli->query("SELECT * FROM `banip` WHERE `ip` = '$ip'"); $status_ban_ip = mysqli_num_rows($verifica_status_ban_query); |
In continuare vom avea nevoie de o conditie care sa verifice datele obtinute din verificarea efectuata mai sus si sa spuna daca utilizatorul este banat sau nu:
Functia arata astfel:
1 2 3 |
if($status_ban_ip >= 1) { // Ce sa faca in caz ca utilizatorul este banat. } |
Acum, ultimul pas pe care il vom face este sa inchidem conexiunea MySql de la server folosind urmatoarea functie:
1 |
mysqli_close($mysqli); |
In final, fisierul nostru PHP, in cazul meu banip.php, trebuie sa arate astfel:
1 2 3 4 5 6 7 8 |
<?php query("SELECT * FROM `banip` WHERE `ip` = '$ip'"); $status_ban_ip = mysqli_num_rows($verifica_status_ban_query); if($status_ban_ip >= 1) { die('Ne pare rau, dar se pare ca adresa ta IP este banata pe acest site.'); } mysqli_close($mysqli); ?> |
In loc de die('Ne pare rau, dar se pare ca adresa ta IP este banata pe acest site.'); puteti pune orice doriti, de preferat este sa puneti die(''); si un mesaj.
Am sa va arat un cod suplimentar care sa ne obtina motivul banari (daca ati observat mai sus, in codul SQL este specificat sa se creeze si un rand special in tabelul SQL pentru motivul banari).
Pentru inceput avem nevoie de o functie care sa preia toate datele din tabelul MySQL. Precum urmatoarea functie:
1 2 3 4 5 6 |
$motiv_ban_query = $mysqli->query("SELECT * FROM `banip` WHERE `ip` = '$ip'"); while($row = mysqli_fetch_array($motiv_ban_query)){ $motiv_ban = $row['motiv']; $id_ban = $row['id']; $ip_ban = $row['ip']; } |
Aceasta functie trebuie adaugata chiar deasupra functiei die('');.
Acum, vom inlocui complet linia cu functia die(''); cu urmatoarea functie care o sa afiseze mesajul de avertizare precum ca utilizatorul este banat pe ip plus motivul daca este specificat:
1 |
die('Ne pare rau, se pare ca adresa ta IP ('.$ip_ban.') a fost banata. Motivul pentru care a fost banata este urmatorul: '.$motiv_ban.'.'); |
Acum, pentru a activa sistemul de BANIP pe pagina vom folosi urmatoarea functie:
1 |
require_once('/calea/catre/banip.php'); |
Cel mai important este ca fisierul banip.php sa fie adaugat cu ajutorul functiei require_once(''); la inceputul fisierului.
Asta a fost tot. Pe data viitoare 🙂
$verifica_status_ban_query = $mysqli-query(„SELECT * FROM
banip
WHEREip
= ‘$ip'”); Eroare pe aceasta linie , updateaz-o la formad PDO , sau rezolva eroarea.Inlocuieste
$mysqli-query
cu$mysqli->query
.