IP-Sperre - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Gerrit (81 Beiträge) am Dienstag, 20.November.2001, 23:03.
    IP-Sperre

      Leute, ich brauche noch einmal eure Hilfe. Ich habe den untenstehenden Perlcode in den Quelltext eingefügt. Wenn ich eine Kontaktanzeige eintippe und abschicke, dann wird die Anzeige zweimal veröffentlicht. Sie sollte natürlich nur einmal veröffentlicht werden. Tippe ich eine zweite Anzeige mit der gleichen ip und schicke sie ab, dann wird auch die zweite Anzeige zweimal veröffentlicht. Das Eingeben einer zweiten Anzeige mit derselben ip sollte eigentlich nicht erlaubt sein. Die Meldung "Du kannst nur eine Kontaktanzeige aufgeben !" erscheint leider auch nicht. Woran liegt das ?

      Wenn ich die Felder "ip" und "time" als Felder der db "kontakte" definiere, dann erscheinen diese Felder leider auch im Anzeigenformular. Gibt es eine Möglichkeit, diese beiden Felder im Anzeigenformular nicht erscheinen zu lassen ? Oder sollte ich die Felder "ip" und "time" doch als Felder der db "sperre" definieren ?

      <perl>
      #Zeitschranke definieren:
      $sek=7200;
      $gesperrt=0;
      #IP abfragen:
      $ip=$_REMOTE_ADDR;
      #IP in der Datenbank suchen und pruefen, ob schon vorhanden:
      get "ip==$ip","kontakte"; #oder wie die DB heißt
      #wenn IP bereits vorhanden, prüfe ob IP innerhalb der letzten 2 Stunden (7200 sec.) angelegt wurde:
      if (($_amount>0) && ($zeit > time-$sek))
      #wenn ja, sperre den Typen:
      {
      $gesperrt=1;
      out "Du kannst nur eine Kontaktanzeige aufgeben !"; # Ausgabe des Hinweises...
      }
      else
      {
      put undef,"kontakte"; # alle Daten aus dem Formular werden eingetragen + ip + time (über hidden im Formular)
      }
      #Wenn er nicht gesperrt wird:
      if ($gesperrt==0)
      {
      #loesche nebenbei alte Eintraege:
      del "zeit < ".(time - $sek),"kontakte";
      #merke dir die IP und die aktuelle Zeit:
      put ["ip", $ip, "zeit", time], "kontakte";
      }
      </perl>
      

      Danke. Gerrit.


    Ihre Antwort:

    Name: EMail: EMail bei Antwort? WWW:
    Titel:
    Text:

    Neuer Eintrag


 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Gerrit (81 Beiträge) am Dienstag, 20.November.2001, 23:03.
    IP-Sperre

      Leute, ich brauche noch einmal eure Hilfe. Ich habe den untenstehenden Perlcode in den Quelltext eingefügt. Wenn ich eine Kontaktanzeige eintippe und abschicke, dann wird die Anzeige zweimal veröffentlicht. Sie sollte natürlich nur einmal veröffentlicht werden. Tippe ich eine zweite Anzeige mit der gleichen ip und schicke sie ab, dann wird auch die zweite Anzeige zweimal veröffentlicht. Das Eingeben einer zweiten Anzeige mit derselben ip sollte eigentlich nicht erlaubt sein. Die Meldung "Du kannst nur eine Kontaktanzeige aufgeben !" erscheint leider auch nicht. Woran liegt das ?

      Wenn ich die Felder "ip" und "time" als Felder der db "kontakte" definiere, dann erscheinen diese Felder leider auch im Anzeigenformular. Gibt es eine Möglichkeit, diese beiden Felder im Anzeigenformular nicht erscheinen zu lassen ? Oder sollte ich die Felder "ip" und "time" doch als Felder der db "sperre" definieren ?

      <perl>
      #Zeitschranke definieren:
      $sek=7200;
      $gesperrt=0;
      #IP abfragen:
      $ip=$_REMOTE_ADDR;
      #IP in der Datenbank suchen und pruefen, ob schon vorhanden:
      get "ip==$ip","kontakte"; #oder wie die DB heißt
      #wenn IP bereits vorhanden, prüfe ob IP innerhalb der letzten 2 Stunden (7200 sec.) angelegt wurde:
      if (($_amount>0) && ($zeit > time-$sek))
      #wenn ja, sperre den Typen:
      {
      $gesperrt=1;
      out "Du kannst nur eine Kontaktanzeige aufgeben !"; # Ausgabe des Hinweises...
      }
      else
      {
      put undef,"kontakte"; # alle Daten aus dem Formular werden eingetragen + ip + time (über hidden im Formular)
      }
      #Wenn er nicht gesperrt wird:
      if ($gesperrt==0)
      {
      #loesche nebenbei alte Eintraege:
      del "zeit < ".(time - $sek),"kontakte";
      #merke dir die IP und die aktuelle Zeit:
      put ["ip", $ip, "zeit", time], "kontakte";
      }
      </perl>
      

      Danke. Gerrit.

     Antworten

    Beitrag von Sander (8133 Beiträge) am Dienstag, 20.November.2001, 23:37.
    Re: IP-Sperre

      so könnte es klappen

      <perl>
      #Zeitschranke definieren:
      $sek=7200;
      $gesperrt=0;
       
      #IP abfragen:
      $ip=$_REMOTE_ADDR;
      #IP in der Datenbank suchen und pruefen, ob schon vorhanden:
      get "ip==$ip","kontakte"; #oder wie die DB heißt
      #wenn IP bereits vorhanden, prüfe ob IP innerhalb der letzten 2 Stunden (7200 sec.) angelegt wurde:
      

      if (($_amount>0) && ($zeit > time-$sek))
      #wenn ja, sperre den Typen:
      {
      $gesperrt=1;
      out "Du kannst nur eine Kontaktanzeige aufgeben !"; # Ausgabe des Hinweises...
      $cmd="";
      undef %_put;
      }
      else
      {
      $_put{ip}=$ip;
      $_put{zeit}=time;
      put undef,"kontakte"; # alle Daten aus dem Formular werden eingetragen + ip + time (über hidden im Formular)
      undef %_put;
      }
      #Wenn er nicht gesperrt wird:
      if ($gesperrt==0)
      {
      #loesche nebenbei alte Eintraege:
      del "zeit < ".(time - $sek),"kontakte";
      #merke dir die IP und die aktuelle Zeit:
      }
      </perl>
       
      <do action=all formfields=-Id,ip,zeit>
      

      Sander

     Antworten

    Beitrag von Sander (8133 Beiträge) am Dienstag, 20.November.2001, 23:40.
    Re: IP-Sperre

      achso, mit dem del löscht du aber nach 2 stunden alle Inserate, die vor 2 Stunden eingegeben wurden.
      Das kann eigentlich raus oder mit einer anderen Lebensdauer passieren (14 Tage oder wie lange die Anzeige halt stehen soll)

      Sander

     Antworten

    Beitrag von Gerrit (81 Beiträge) am Mittwoch, 21.November.2001, 13:27. WWW: liebesrose.de
    Re: IP-Sperre

      Hallo, Die IP-Sperre funktioniert. Dafür schon mal ein dickes Dankeschön. Nun möchte ich noch eine kleine Kosmetik vornehmen. Ich möchte den Text :"Bitte nur eine Kontaktanzeige aufgeben ! Bei Fragen wende Dich bitte an den Webmaster." in roter Schrift ausgeben und das Wort "Webmaster" soll als Email-Link mit der Emailadresse "webmaster@liebesrose.de" im Formular erscheinen. Ich habe es u.a. so probiert, aber es gab folgende Fehlermeldung. Ausserdem erschien die Schrift nicht dicker <b> und nicht in rot :

      Quelltext:

      out "<b><font color="#ff0000">Bitte nur eine Kontaktanzeige aufgeben ! Bei Fragen wende Dich bitte an den <a href="mailto:webmaster@liebesrose.de">Webmaster.</a></font></b>"; # Ausgabe des Hinweises...
      

      Fehlermeldung :

      [ Fehler: (perl) in /liebesrose.de/kontakte/kontakte: syntax error at (eval 155) line 15, near "#ff0000">Bitte nur eine Kontaktanzeige aufgeben ! Bei Fragen wende Dich bitte an den Webmaster."; # Ausgabe des Hinweises... $cmd" ]

      Weiterhin möchte ich alle Einträge in den Feldern "ip" und "zeit" der db "sperre" die älter als zwei Stunden sind löschen. Wie sieht der del-Befehl aus ? Mit diesem del-Befehl jedenfalls werden die älteren Einträge der Felder "ip" und "zeit" in der db "sperre" nicht gelöscht.

      #loesche nebenbei alte Eintraege:
      del "zeit < ".(time - $sek),"sperre";
      

      Danke. Gerrit.

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 21.November.2001, 13:38.
    Re: IP-Sperre

      Bitte poste nochmal den ganzen Code. Nach dem vorletzten post hast du doch die db "sperre" gar nicht mehr gebraucht...
      Zum Fehler:
      du darfst innerhalb von " " nach dem out keine weiteren " drinhaben oder mit \maskieren

      out "<b><font color=\"#ff0000\">Bitte nur eine Kontaktanzeige aufgeben ! Bei Fragen wende Dich bitte an den <a href=\"mailto:webmaster@liebesrose.de\">Webmaster.</a></font></b>"; # Ausgabe des Hinweises...
      


      Sander

     Antworten

    Beitrag von Gerrit (81 Beiträge) am Mittwoch, 21.November.2001, 20:34. WWW: liebesrose.de
    Re: IP-Sperre

      Der Text "Bitte nur eine Kontaktanzeige aufgeben !......" wird jetzt richtig angezeigt.

      Ich habe die Felder "ip" und "zeit" in die db "sperre" angelegt, damit sie nicht im Eingabeformular erscheinen. Hätte ich die beiden Felder  "ip" und "zeit" in der db "kontakte" angelegt, dann wären sie, meines wissens nach, auch im Eingabeformular erschienen und dort sollten sie natürlich nicht erscheinen. Jedenfalls wusste ich nicht, ob es eine Möglichkeit gibt, diese beiden Felder in der db "kontakte" anzulegen und sie nicht im Eingabeformular erscheinen zu lassen. Darum habe ich sie in der db "sperre" angelegt.

      Unten nun der Perlcode für die IP-Sperre. Dort ist der del-Befehl >>> del "zeit < ".(time - $sek),"sperre"; <<< zwar nicht enthalten, aber ich habe es auch mit dem del-Befehl ausprobiert. Dabei wurden allerdings die Einträge der Felder "ip" und "zeit" der db "sperre" die älter als 2 Stunden sind, nicht gelöscht. Ich wollte dagegen alle Einträge der Felder "ip" und "zeit" in der db "sperre", die älter als 2 Stunden sind, löschen.

      <perl>
      #Zeitschranke definieren:
      $sek=7200;
      $gesperrt=0;
      #IP abfragen:
      $ip=$_REMOTE_ADDR;
      #IP in der Datenbank suchen und pruefen, ob schon vorhanden:
      get "ip==$ip","sperre"; #oder wie die DB heißt
      #wenn IP bereits vorhanden, prüfe ob IP innerhalb der letzten 2 Stunden (7200 sec.) angelegt wurde:
      if (($_amount>0) && ($zeit > time-$sek))
      #wenn ja, sperre den Typen:
      {
      $gesperrt=1;
      out "<b><font color=\"#ff0000\">Bitte nur eine Kontaktanzeige aufgeben ! Bei Fragen wende Dich bitte an den <a href=\"mailto:webmaster\@liebesrose.de\">Webmaster.</a></font></b>"; # Ausgabe des Hinweises...
      $cmd="";
      undef %_put;
      }
      else
      {
      $_put{ip}=$ip,"sperre";
      $_put{zeit}=time,"sperre";
      put undef,"kontakte"; # alle Daten aus dem Formular werden eingetragen + ip + time (über hidden im Formular)
      undef %_put;
      }
      #Wenn er nicht gesperrt wird:
      if ($gesperrt==0)
      {
      #merke dir die IP und die aktuelle Zeit:
      put ["ip", $ip, "zeit", time], "sperre";
      }
      </perl>
      

      Danke. Gerrit.

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 21.November.2001, 20:52.
    Re: IP-Sperre

      Das sollte reichen:

      <perl>
      #Zeitschranke definieren:
      $sek=7200;
      $gesperrt=0;
      

      #IP abfragen:
      $ip=$_REMOTE_ADDR;
      #IP in der Datenbank suchen und pruefen, ob schon vorhanden:
      

      del "zeit<".time-$sek,"sperre";

      get "ip==$ip","sperre"; #oder wie die DB heißt
       
      #wenn IP bereits vorhanden, prüfe ob IP innerhalb der letzten 2 Stunden (7200 sec.) angelegt wurde:
      

      if (($_amount>0) && ($zeit > time-$sek))
      #wenn ja, sperre den Typen:
      {
      out "<b><font color=\"#ff0000\">Bitte nur eine Kontaktanzeige aufgeben ! Bei Fragen wende Dich bitte an den <a href=\"mailto:webmaster\@liebesrose.de\">Webmaster.</a></font></b>"; # Ausgabe des Hinweises...
      $cmd="";
      undef %_put;
      }
      else
      {
      $_put{ip}=$ip;
      $_put{zeit}=time;
      put undef,"kontakte"; # alle Daten aus dem Formular werden eingetragen + ip + time (über hidden im Formular)
      put undef,"sperre";
      undef %_put;
      }
      </perl>
       
      
      Sander

     Antworten

    Beitrag von Gerrit (81 Beiträge) am Mittwoch, 21.November.2001, 22:39. WWW: liebesrose.de
    Re: IP-Sperre

      Ich habe den Perlcode so wie Du ihn geschrieben hast (siehe unten) in den Quelltext eingefügt und noch einmal Probehalber 2 Anzeigen aufgegeben. Dann habe ich mir die Felder "id" und "zeit" in der db "sperre" angeschaut und festgestellt, dass dort immer noch 278 Einträge vorhanden sind. Auch nach der Reorganisation der db "sperre" waren noch 278 Einträge vorhanden. Es wurden also nicht wie gewünscht, die "ip" und "zeit" Felder in der db "sperre" mit den Einträgen gelöscht, die älter als 2 Stunden sind.

      <perl>
      #Zeitschranke definieren:
      $sek=7200;
      $gesperrt=0;
       #IP abfragen:
      $ip=$_REMOTE_ADDR;
       #loesche alte Eintraege ( "ip" und "zeit" ) in der db "sperre":
      del "zeit<".time-$sek,"sperre";
      #IP in der Datenbank suchen und pruefen, ob schon vorhanden:
      get "ip==$ip","sperre"; #oder wie die DB heißt
       #wenn IP bereits vorhanden, prüfe ob IP innerhalb der letzten 2 Stunden (7200 sec.) angelegt wurde:
      if (($_amount>0) && ($zeit > time-$sek))
      #wenn ja, sperre den Typen:
      {
      out "<b><font color=\"#ff0000\">Bitte nur eine Kontaktanzeige aufgeben ! Bei Fragen wende Dich bitte an den <a href=\"mailto:webmaster\@liebesrose.de\">Webmaster.</a></font></b>"; # Ausgabe des Hinweises...
      $cmd="";
       undef %_put;
      }
      else
      {
      $_put{ip}=$ip;
      $_put{zeit}=time;
      put undef,"kontakte"; # alle Daten aus dem Formular werden eingetragen + ip + time (über hidden im Formular)
      put undef,"sperre";
      undef %_put;
      }
      </perl>
      

      Danke. Gerrit.

     Antworten

    Beitrag von Gerrit (81 Beiträge) am Donnerstag, 22.November.2001, 10:54. WWW: liebesrose.de
    Re: IP-Sperre

      Langsam wird es dringend ich habe nämlich mittlerweile 659 Einträge in der db "sperre"

      Ich habe den Perlcode so wie Du ihn geschrieben hast (siehe unten) in den Quelltext eingefügt und noch einmal Probehalber 2 Anzeigen aufgegeben. Dann habe ich mir die Felder "id" und "zeit" in der db "sperre" angeschaut und festgestellt, dass dort immer noch 278 Einträge vorhanden sind (wie gesagt, mittlerweile 659). Auch nach der Reorganisation der db "sperre" waren noch 278 Einträge vorhanden. Es wurden also nicht wie gewünscht, die "ip" und "zeit" Felder in der db "sperre" mit den Einträgen gelöscht, die älter als 2 Stunden sind.


      <perl>
      #Zeitschranke definieren:
      $sek=7200;
      $gesperrt=0;
       #IP abfragen:
      $ip=$_REMOTE_ADDR;
       #loesche alte Eintraege ( "ip" und "zeit" ) in der db "sperre":
      del "zeit<".time-$sek,"sperre";
      #IP in der Datenbank suchen und pruefen, ob schon vorhanden:
      get "ip==$ip","sperre"; #oder wie die DB heißt
      #wenn IP bereits vorhanden, prüfe ob IP innerhalb der letzten 2 Stunden (7200 sec.) angelegt wurde:
      if (($_amount>0) && ($zeit > time-$sek))
       #wenn ja, sperre den Typen:
      {
      out "<b><font color=\"#ff0000\">Bitte nur eine Kontaktanzeige aufgeben ! Bei Fragen wende Dich bitte an den <a href=\"mailto:webmaster\@liebesrose.de\">Webmaster.</a></font></b>"; # Ausgabe des Hinweises...
      $cmd="";
      undef %_put;
      }
      else
      {
      $_put{ip}=$ip;
      $_put{zeit}=time;
      put undef,"kontakte"; # alle Daten aus dem Formular werden eingetragen + ip + time (über hidden im Formular)
      put undef,"sperre";
       undef %_put;
      }
      </perl>
      

     Antworten


     
 Liste der Einträge von 54450 bis 54600:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.06s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!