.htaccess ipban

  • Onderwerp starter Onderwerp starter hanna
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

hanna

Gebruiker
Lid geworden
8 sep 2000
Berichten
966
ik ben met een .htaccess bezig om een spammer te bannen en heb vervolgens deze gemaakt, maar weet niet zeker of dit goed is? kan dat zo met alle ip's op een rijtje.

Order Deny,Allow
Deny from 66.246.154.1
Deny from 66.246.154.2
Deny from 66.246.154.3
Deny from 66.246.154.4
Deny from 66.246.154.5
Deny from 66.246.154.6
Deny from 66.246.154.7
Deny from 66.246.154.8
Deny from 66.246.154.9

of kan ik beter zoiets maken in een .htaccess


<?
$ip = $_SERVER['REMOTE_ADDR'];
if (($ip=="66.246.154.1") || ($ip="ip2") || ($ip="ip3")){
header("Location: http://www.nederland.nl");
exit;
}
?>
 
Probleem met spambots is, is dat ze elke keer een ander IP-adres hebben.

Heb zelf ook eens een PHP-banscrit gemaakt voor een gastenboek. Op 1 dag soms wel 20 verschillende ip's dus dan schiet het nog niet op.

Je kunt beter naar een validatiemethode als CAPTCHA kijken, daarmee heb je aardig wat minder spammers.
 
ik heb CAPTCHA er al in dit gaat over 1 persoon die bewust bezig blijft
 
Kun je in je firewall op je pc en/of je router niet dat ip-adres blokkeren?

Andere mogelijkheid is PeerGuardian gebruiken en daar een custom blocklist in aanmaken.

Succes,

Tijs.
 
het heeft toch niert met mijn pc of router te maken het gastenboek staat gewoon bij mijn provider.
 
Je had er niet bij gemeld dat je die website extern hebt gehost.

Ok, in dat geval zou je kunnen kijken of je in de configuratiesoftware/configuratiewebsite die je provider levert misschien de mogelijkheid hebt om ip-adressen te blokkeren of dat je bij je provider een aanvraag kunt doen dat die adresrange wordt opgenomen in hun firewall om te worden geblokkeerd.

Tijs.
 
Ip b annen gaat niet bij mijn provider de range dat zal ik eens vragen maar ik ben bang van niet.

Ben nu een ipban aan het maken met een data base en een admin, dan kan ik er ook vlug bij.

Maar als het maar om een paar ip's gaat gaat het hier ook goed mee.
<?
$ip = $_SERVER['REMOTE_ADDR'];
if (($ip=="66.246.154.1") || ($ip="ip2") || ($ip="ip3")){
header("Location: http://www.nederland.nl");
exit;
}
?>

Bedankt voor het meedenken.
 
PHP:
<?php
// DB MODEL
//
// id INT auto_increment primary
// ip VARCHAR(15)
// reden VARCHAR(250)
//
// De id en de reden zijn meer voor de administratie...

$banQuery = "SELECT ip FROM banlist WHERE ip='$_SERVER[REMOTE_ADDR]'";
$banResult = mysql_query($banQuery) or die(mysql_error());

if(mysql_num_rows($banResult) !=0)
{
  echo 'U bent niet gemachtigd om een bericht te plaatsen.';
}
else
{
  //Query uitvoeren om bericht toe te voegen
}
?>
Simpel toegepast, wellicht heb je er wat aan.
 
Laatst bewerkt:
ik heb het zo gemaakt:

PHP:
<?php
// © 2007, Solveg.nl Internet Services/Webdesigne/PC Service
/*
CREATE TABLE ip (
id int(4) NOT NULL auto_increment,
ip varchar(250),
reden varchar(250),
PRIMARY KEY (id));
*/
function dbconnect(){
$host = "db.xxxxxx.nl";
$gebruikersnaam = "xxxxxx";
$wachtwoord = "xxxxxx";
$database = "xxxxxxx";
mysql_connect($host,$gebruikersnaam,$wachtwoord);
mysql_select_db($database);
}
dbconnect();
$result = mysql_query("SELECT * FROM ip");
while ($result = mysql_fetch_object($result)){
if ($_SERVER['REMOTE_ADDR'] == $result->ip){
echo "Verbannen.";
exit;
 }
}
?>

bedankt voor die van jou.
 
@ Tja Devil, je was vergeten een exit; na de ECHO te zetten.
 
Is niet nodig, ik werk in dat script met een ELSE

Dus als het ip gevonden is krijg je die echo en voor de rest niets, is het ip niet gevonden dat kan het bericht in de database worden geplaatst.

Ik had trouwens eerst ook dezelfde query maar het leek mij handiger om gewoon een WHERE te gebruiken. Met de query die jij gebruikt haal je alle ip-adressen binnen terwijl je eigenlijk alleen maar wilt weten of dat ene ip-adres er in staat.
 
nou hij werkte niet bij mij dus heb ik hem wat aangepast en nu werkt hij prima.

PHP:
mysql_connect($host,$gebruikersnaam,$wachtwoord);
mysql_select_db($database);
$banQuery = "SELECT ip FROM banlist WHERE ip='".$_SERVER['REMOTE_ADDR']."'";
$banResult = mysql_query($banQuery) or die(mysql_error());

if(mysql_num_rows($banResult) !=0)
{
  echo 'U bent niet gemachtigd om een bericht te plaatsen. You not authorised to write a message!';
  exit;
}
else
{
  //Query uitvoeren om bericht toe te voegen
}
?>
 
Werkt hij zonder exit ook? Als het goed is wel...

Maar goed, op deze manier stopt hij meteen met het uitvoeren van de rest van het script. Op zich ook handig, maar dan wel in een functie en niet in een geheel script. Anders loop je kans dat andere dingen die je wel had willen gebruiken niet worden uitgevoerd.
 
zonder exit geeft hij wel een melding dat ik niet gemachtigd ben maar ik kan dan alsnog een bericht in het gastenboek zetten.

Ja, zo'n kei ben ik nou ook weer niet in php maar zo als hij nu is doet hij het goed, die van mij werkte niet.
 
Hij zat achter een proxy, maar het is nu opgelost met een .htaccess
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan