IP Adresse sperren
Christoph
- php
Hallo,
in meinem Gästebuch spamt mir einer andauernd was voll mit endloslangen Texten usw. Nun benutzt er immer die gleiche IP Adresse, also hat er ja eine feste IP und somit wollte ich diese Adresse sperren mit php.
ich habe daher eine Tabelle eingerichtet wo die ganzen IP Adressen drin stehen werden die mir alles zuspammen. Klar keine sichere Variante wenn man DSL benutzt und jeden Tag ne andere Adresse bekommt aber bei einer festen IP gehts vielleicht.
Nun zu meinem Script. Ich habs mal so versucht:
$result3 = mysql_query("SELECT * FROM ip_block");
$global_ip_data=mysql_fetch_array($result3);
$IP_BLOCK=$global_ip_data['ip'];
if($IP_BLOCK == $_SERVER['REMOTE_ADDR'])
{
echo("Achtung deine IP Adresse wurde gesperrt, bei Fragen wende Dich bitte an den Webmaster.");
}
else
{
man kann schreiben...
trotzdem ich habe mal meine IP Adresse gesperrt aber es geht nicht :/
Wer weiss Rat?
Liebe Grüße
Christoph
Hallo.
Steht denn in $IP_BLOCK auch das richtige drin? (mal ausgeben lassen und kontrollieren) Nicht, dass der Wert leer ist oder du nach etwas anderem suchst.
CIAO
Hallo
Steht denn in $IP_BLOCK auch das richtige drin? (mal ausgeben lassen und kontrollieren) Nicht, dass der Wert leer ist oder du nach etwas anderem suchst.
nein es steht:
CREATE TABLE ip_block (
id int(10) NOT NULL auto_increment,
ip varchar(250) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;
ip\_block
INSERT INTO ip_block VALUES (1, '195.93.66.17');
INSERT INTO ip_block VALUES (2, '192.168.0.119');
drin.
Grüße
Christoph
hi,
Steht denn in $IP_BLOCK auch das richtige drin? (mal ausgeben lassen und kontrollieren) Nicht, dass der Wert leer ist oder du nach etwas anderem suchst.
nein es steht:
der inhalt deiner variablen $IP_BLOCK im script war gemeint.
gruss,
wahsaga
Holladiewaldfee,
Wer weiss Rat?
Dein Script sperrt nur die erste IP in der Liste.
Du solltest die Ergebnisse Deiner Query in einer Schleife abarbeiten, um auch mehr als den ersten Datensatz sperren zu können.
Effektiver finde ich aber eine Lösung mit htaccess (deny ...)
Ciao,
Harry
hi,
Dein Script sperrt nur die erste IP in der Liste.
Du solltest die Ergebnisse Deiner Query in einer Schleife abarbeiten, um auch mehr als den ersten Datensatz sperren zu können.
dann würde ich aber eher dazu tendieren, nur ganz gezielt mit der aktuellen IP in der datenbank nachzusehen, ob sich ein passender datensatz findet.
Effektiver finde ich aber eine Lösung mit htaccess (deny ...)
das sowieso.
allerdings evtl. weniger komfortabel anpassbar.
gruss,
wahsaga
Dann such doch in deiner Datenbank gezielt nach der IP im "WHERE" - Block.
hi,
Dann such doch in deiner Datenbank gezielt nach der IP im "WHERE" - Block.
genau das meinte ich ja.
gruss,
wahsaga
Quasi: SELECT * FROM ip_block WHERE ip=".$_SERVER['REMOTE_ADDR']." oder?
Grüße
Christoph
Da die IP ein Text ist, muss sie in Anführungszeichen stehen.
Da die IP ein Text ist, muss sie in Anführungszeichen stehen.
Das habe ich jetzt nicht ganz verstanden... die IP steht doch in Anführungszeichen
Die Anführungszeichen, die da stehen, unterbrechen sozusagen den String.
Der Befehl muss folgendermaßen aussehen:
SELECT * FROM ip_block WHERE ip="".$_SERVER['REMOTE_ADDR']."""
oder aber auch:
SELECT * FROM ip_block WHERE ip=}"{$_SERVER['REMOTE_ADDR']}"
Nur mit dem Backslash vorne dran, wird das Anführungszeichen als solches in den String übernommen. Ansonsten bedeutet es wie schon erwähnt, dass der String vorerst beendet wird.
Holladiewaldfee,
Du solltest die Ergebnisse Deiner Query in einer Schleife abarbeiten, um auch mehr als den ersten Datensatz sperren zu können.
dann würde ich aber eher dazu tendieren, nur ganz gezielt mit der aktuellen IP in der datenbank nachzusehen, ob sich ein passender datensatz findet.
Ja, selbstverständlich. Mein Fehler, nicht vollends zuende gedacht ...
Ciao,
Harry