Christoph: IP Adresse sperren

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

  1. 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

    1. 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;

      Daten für Tabelle 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

      1. 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

  2. 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

    --
      Schnee :) Skitour gefällig?
      http://harry.ilo.de/projekte/berge/
    1. 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

      1. Dann such doch in deiner Datenbank gezielt nach der IP im "WHERE" - Block.

        1. hi,

          Dann such doch in deiner Datenbank gezielt nach der IP im "WHERE" - Block.

          genau das meinte ich ja.

          gruss,
          wahsaga

        2. Quasi: SELECT * FROM ip_block WHERE ip=".$_SERVER['REMOTE_ADDR']." oder?

          Grüße

          Christoph

          1. Da die IP ein Text ist, muss sie in Anführungszeichen stehen.

            1. 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

              1. 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.

      2. 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

        --
          Schnee :) Skitour gefällig?
          http://harry.ilo.de/projekte/berge/