ciao qualcuno sa darmi il link di uno script o il codice per bannare gli utenti attraverso l'ìp
Printable View
ciao qualcuno sa darmi il link di uno script o il codice per bannare gli utenti attraverso l'ìp
qui è un esempio molto semplice, che ho scritto adesso,ma può essere migliorato:
puoi anche pensare di salvare gli ip bannati (o che vuoi bannare) in un file di testo .txt ==> qui un link utile:Codice PHP:<?
$userIP=getenv("REMOTE_ADDR");//indirizzo ip dell'utente
//lista ip bannati:
$banIPs = array (
'/22.33.44.555/',
'/231.16.43.152/',
'/432.35.65.67/',
'/21.45.65.78/'
);
//setti una variabile ban a false:
$isBanIP = false;
//ciclo per verificare che l'ip dell'utente connesso sia nella lista ip bannati:
foreach ($banIPs as $checkIP){
if (preg_match ($checkIP, $userIP)) $isBanIP = true;
}
//se la variabile ban è true vieti l'accesso al sito:
if ($isBanIP == true){
echo "Il tuo IP è Bannato!";
exit;
}
?>
http://www.vinzplanet.com/65/bloccar...ri-fastidiosi/
:shock:
ok grazie risolto tutto
ho fatto una modifica al codice, che rileva solo i primi 2 valori degli IP.
Questo può essere utile per IP che variano ad ogni nuova connessione gli ultimi 2 valori, i primi 2 valori dell'IP rimangono inalterati.
(ho tolto anche il preg_match)
http://eurosalute.altervista.org/tool/banIP.php
Codice PHP:<?
$userIP=getenv("REMOTE_ADDR");//indirizzo ip dell'utente
//prelevo solo i primi 2 valori dell'IP:
$pos1_userIP=strpos($userIP, ".")+1;//restituisce la posizione del primo "." a partire da 0
$v1_userIP=substr($userIP,0,$pos1_userIP);
$tronc_userIP=substr($userIP,$pos1_userIP,strlen($userIP));
$pos2_userIP=strpos($tronc_userIP, ".")+1;
$v2_userIP=substr($tronc_userIP,0,$pos2_userIP);
$v1v2_userIP=$v1_userIP.$v2_userIP;
echo "<p>IP utente(solo i primi 2 valori): ".$v1v2_userIP;
//lista ip bannati:
$banIPs = array (
'22.33.44.555',
'231.16.43.152',
'432.35.65.67',
'21.45.65.78'
);
//setti una variabile ban a false:
$isBanIP = false;
//ciclo per verificare che l'ip dell'utente connesso sia nella lista ip bannati:
echo "<p>Lista IP Bannati(solo i primi 2 valori):";
foreach ($banIPs as $checkIP){
//prelevo solo i primi 2 valori per ogni IP nella lista bannati:
$pos1_checkIP=strpos($checkIP, ".")+1;//restituisce la posizione del primo "." a partire da 0
$v1_checkIP=substr($checkIP,0,$pos1_checkIP);
$tronc_checkIP=substr($checkIP,$pos1_checkIP,strlen($checkIP));
$pos2_checkIP=strpos($tronc_checkIP, ".")+1;
$v2_checkIP=substr($tronc_checkIP,0,$pos2_checkIP);
$v1v2_checkIP=$v1_checkIP.$v2_checkIP;
echo "<br>".$v1v2_checkIP;
//verifico che l'IP utente sia bannato:
if ($v1v2_checkIP==$v1v2_userIP) $isBanIP = true;
}
//se la variabile ban è true vieti l'accesso al sito:
if ($isBanIP == true){
echo "<p>ATTENZIONE: Il tuo IP è Bannato!";
exit;
}
?>
io vorrei però fare così che la lista dei bannati venga salvata in una tabella che crea, con l'indirizzo ip e la data di quando finirà se si può mettere perchè al posto di bannare x sempre vorrei bananre per una data ben precisa ad es per 2 mesi ecc
si, inserisci gli IP che vuoi bloccare nell'array:
salvi il file come banIP.php(o come vuoi tu) e lo includi dove hai bisogno, o nel file index.php del tuo sito.Codice PHP://esempio
$banIPs = array (
'indirizzo IP n.1',
'indirizzo IP n.2',
'indirizzo IP n.3',
'..ecc....'
);
potresti anche pensare di creare una tabella nel database che memorizza questi IP con un form input.
prelevi quindi gli IP dalla tabella per il controllo.
io vorrei però poter bannare per un tot di tempo e salvare i dati in una tabella con data di sban, motivo e ip
guarda è possibile fare tutto...
crei una tabella con una struttura che interessa a te....
crei un file per l'inserimento di questi valori con un form input...(admin area)
di solito gli IP vengono sboccati manualmente, per il fatto che nella maggior parte dei firewall, gli IP vengono memorizzati automaticamente in base al tipo di attacco che subisce il sito, dopo un certo numero di tentativi di attacco(variabile impostabile a piacere) viene bloccato l'accesso al sito.
crei un altro file per la lettura di questi valori e per bloccare l'accesso al sito....
l'ideale sarebbe un firewall....io ne ho installato uno.