Re: Get? ,Datum?, Vergleichsoperatoren? - klar... - 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 Christoph Bergmann (8110 Beiträge) am Samstag, 14.April.2001, 20:01.
    Re: Get? ,Datum?, Vergleichsoperatoren? - klar...

      Es gibt eigentlich fast nix, was Perl nich kennt ;-)

      In Perl/bp ist alles, was nicht null oder leer ist WAHR, umgekehrt, alles was 0 oder leer ist FALSCH. Also um eine Variable auf WAHR zu setzen, einfach auf 1 und auf FALSCH auf 0 setzen... Abfrage geht dann z.B. so: if $var ... (wahr) oder if !$var ... (falsch)

      ob obiger ansatz als lösung zu deinem problem gut ist, mhhh... speicherst du die ips in einer extra db? dann müsstest du eigentlich nur folgendes machen:

      get "ip==$ip Datum>-:05", "ipdb";
      

      if($ip ne "")
      {
      
      ...gab in den letzten 5 minuten bereits eintrag von dieser ip...
      } else
      {
      
      ...ok...
      }

      klar?


    Ihre Antwort:

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

    Neuer Eintrag


 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Marco (840 Beiträge) am Samstag, 14.April.2001, 17:59.
    Get? ,Datum?, Vergleichsoperatoren?

      Hallo,
      vielleicht sollte ich meinen Namen ändern damit es nicht so aussieht, als wäre ich fast der einzige, der über die Ostertage an seiner Seite bastelt!

      1. Ich frage mich, ob perl (bp) wahrheitswerte wie true und false kennt.
      die ip des users soll ausgelesen ($_remo...) und am besten in einer anderen Variablen z.B. "ipuser" gespeichert werden, dann soll die diese mit dem Feld "IP" in Datenbak "gbook" verglichen werden.(Knackpunkt: Geht das mit get und wenn ja wie?)
      Kommt der eintrag schon vor, soll variable "ipexist"
      true gesetzt werden oder halt entsprechend umgekehrt!

      Muss nicht sein: Sollte die ip mehrmals vorkommen, dann soll der letzte Datensatz verwendet werden.



      2. Der datensatz der im punkt 1 ausgelesen wurde, soll im Feld "Datum" mit dem jetzigem Datum verglichen werden, ist die Differenz kleiner als z.B. 5min, so
      soll die Variable kl5 (kleiner 5) true gesetzt werden
      ich habe dazu in der doku folgendes gefunden:

      if($date lt datum("jetzt", "intern"))
      

      angepasst an meine Datenbank, wenn ich´s richtig verstanden habe:

      if($Datum lt datum("jetzt", "gbook"))
      

      bloß wie bekomm ich jetzt die differenz raus????

      3. jetzt müssen beide bedingungen nur noch miteinander verglichen werden

      zuerst ob "ipexist" = true und dann ob "kl5" = true
      dann soll out "Falsch"; augegeben werden.
       ist eine der bedingungen false, dann immer out "Richtig"; (Nicht verdreht).
      

      da dies immer sehr schwer zu erkären ist, hier noch eine skizze http://home.nexgo.de/fr/freewarestation/skizze.gif"




      Erklärung:
      Die soll ein spam-schutz für mein gb werden.
      wenn ein eintrag in der db gemacht wird, wird autmatisch das Datum und die ip gespeichert
      Dies soll es möglich machen, dass von einer ip z.B. nur alle 5 Minuten ein Eintrag gemacht werden kann.

      ich freue mich auch über teilansätze

      mfg marco

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Samstag, 14.April.2001, 20:01.
    Re: Get? ,Datum?, Vergleichsoperatoren? - klar...

      Es gibt eigentlich fast nix, was Perl nich kennt ;-)

      In Perl/bp ist alles, was nicht null oder leer ist WAHR, umgekehrt, alles was 0 oder leer ist FALSCH. Also um eine Variable auf WAHR zu setzen, einfach auf 1 und auf FALSCH auf 0 setzen... Abfrage geht dann z.B. so: if $var ... (wahr) oder if !$var ... (falsch)

      ob obiger ansatz als lösung zu deinem problem gut ist, mhhh... speicherst du die ips in einer extra db? dann müsstest du eigentlich nur folgendes machen:

      get "ip==$ip Datum>-:05", "ipdb";
      

      if($ip ne "")
      {
      
      ...gab in den letzten 5 minuten bereits eintrag von dieser ip...
      } else
      {
      
      ...ok...
      }

      klar?

     Antworten

    Beitrag von Marco (840 Beiträge) am Samstag, 14.April.2001, 23:01.
    Re: Get? ,Datum?, Vergleichsoperatoren? - klar...

      >klar??
      

      NEEE!!!!


      alle Felder wie "Datum" und "IP" stehen in einer db


      Teil von view
      <perl>
           $ip = $_REMOTE_ADDR;
           get "IP==$ip Datum>-:05", "gbook";
           if($ip ne "")
           {
           out "Eintragung leider nicht möglich";
           } else
           {
           if ($cmd eq "add")
            {
            put undef,"gbook";
            out "<div align=\"center\"><font size=\"-1\"><b>Eintrag hinzugefügt...</b></font></div>";
            }
           }
      
         </perl>

      er zeigt jetzt immer:
      "Eintragung leider nicht möglich" (auch wenn ich gar nichts eintragen habe)

     Antworten

    Beitrag von Marco (840 Beiträge) am Sonntag, 15.April.2001, 11:27.
    Re: Get? ,Datum?, Vergleichsoperatoren? - klar...

      Hab es angepasst dass nur bei "hinzufügungen" der check gemacht wird: (hatte ja ne nacht lang zeit)

      <perl>
           if ($cmd eq "add")
            {
             $ip = $_REMOTE_ADDR;
             get "IP==$ip Datum>-:05", "gbook"; ###Diese zeile verstehe ich nicht! vorher kommt var $ip??? ich habe  $ip   $_remote_addr gleichgesetzt 
             if($ip ne "")
              {
               out "Eintragung leider nicht möglich";
             } else
             {
              put undef,"gbook";
              out "<div align=\"center\"><font size=\"-1\"><b>Eintrag hinzugefügt...</b></font></div>";
             }
            }
           </perl>
      

      trotzdem kommt immer noch die "eintragung nicht möglich" obwohl ich mit gerade frisch eingrwählt habe


      ich habe eine eingabeseite und eine ausgabeseite!!

     Antworten

    Beitrag von Ruben (403 Beiträge) am Sonntag, 15.April.2001, 12:14.
    Re: Get? ,Datum?, Vergleichsoperatoren? - klar...

      High, Marco,
      das
      get "IP==$ip Datum>-:05", "gbook"; 
      
      heißt:
      "hole datensatz in dem das Feld IP aus der Datenbank gbook den Wert von $ip hat und der Eintrag des Feldes größer als 5 Minuten ist.
      Du setzt vorher $ip=$_REMOTE_ADDR und damit den Vergleichswert.
      Dann folgt die Abfrage, ob $ip vorhanden ist - hier sollte wohl stehen
      if ($IP ne "")
      
      ....
      da du ja abfragen willst, ob der Kollege schon mal in den letzten 5 Minuten eine Nachricht geschickt hat ($ip muß ja dann vorher mit ins Feld IP gespeichert worden sein!)

      Wie es jetzt ist, ist der erste if-Zweig immer wahr, denn durch das Belegen von $ip ist dies immer ne "" ( nicht gleich nichts)
      hth
      Ruben

     Antworten

    Beitrag von Marco (840 Beiträge) am Sonntag, 15.April.2001, 21:32.
    Re: Get? ,Datum?, Vergleichsoperatoren? - klar...

      Ich bin einfach zu doof...

      ich würd einen bitte ganz freundlich bitten, dass er mir folgende Passage entsprechend anpasst:

      <perl>
           if ($cmd eq "add")
            {
             $ip = $_REMOTE_ADDR;
             get "IP==$ip Datum>-:05", "gbook";
             if($IP ne "")
             {
               out "Eintragung leider nicht möglich";
             } else
             {
              put undef,"gbook";
              out "<div align=\"center\"><font size=\"-1\"><b>Eintrag hinzugefügt...</b></font></div>";
             }
            }
           </perl>
      


      Meine db hat 8 felder, wichtig sind da "IP" und "Datum"
      die ip-nummern und das Datum werden beim 1. Eintragen auch korrekt in db eingetragen. wenn ich nur..

      <perl>
           if ($cmd eq "add")
            {
             put undef,"gbook";
             out "<div align=\"center\"><font size=\"-1\"><b>Eintrag hinzugefügt...</b></font></div>";
            }      
           </perl>
      

      ..dazustehen hab.

      wenn ich auf meiner "Hinzufügen"-Seite mit namen "add" meine eintragungen vornehme, erscheint nach dem klicken auf "submit" die Seite "view" immer mit folgendem text: "Eintragung nicht möglich",
      obwohl ich mit dieser Ip gar nicht innerhalb der 5min einen neuen Eintrag gemacht habe, es wird natürlich auch nichts hinzugefügt.

      Brauche hilfe!!!!!!!!!!!!


      das muss doch klappen

      mfg marco

     Antworten

    Beitrag von Ruben (403 Beiträge) am Montag, 16.April.2001, 09:47.
    Re: Get? ,Datum?, Vergleichsoperatoren? - klar...

      Hallo, Marco,
      mhm, irgendwas mit der Porgrammablauflogik muß da verändert werden.
      Wenn das put ohne die Abfrage nach IP funzt, dann muß meines Erachtens nach die Bedingungsabfrage andersrum sein.
      Folgendes in "normalen" Worten:
      Wenn cmd gleich add, ip=remoteadress. Hole den Datensatz, wo das Feld IP den Wert von ip hat und der jünger als 5 Minuten ist. Wenn keiner vorhanden ist, speichere die eingegebenen Werte (oder gib halt aus Eintrag gespeichert), wenn so ein Datensatz vorhanden ist, blocke das Speichern ab.
      Ist das so richtig erfaßt? Wenn ja, dann halt den Code in etwa wie folgt ändern:
      <perl>
       
      if ($cmd eq "add")
      {
             $ip = $_REMOTE_ADDR;
             get "IP==$ip Datum>-:05", "gbook";
      
             if($IP ne "")        {          out "Eintragung leider nicht möglich";        } else        {         put undef,"gbook";         out "<div align=\"center\"><font size=\"-1\"><b>Eintrag hinzugefügt...</b></font></div>";        }       }      </perl>

     Antworten

    Beitrag von Ruben (403 Beiträge) am Montag, 16.April.2001, 10:01.
    Re: Get? ,Datum?, Vergleichsoperatoren? - klar...

      Hallo, Marco,
      mhm, irgendwas mit der Porgrammablauflogik muß da verändert werden.
      Wenn das put ohne die Abfrage nach IP funzt, dann muß meines Erachtens nach die Bedingungsabfrage andersrum sein.
      Folgendes in "normalen" Worten:
      Wenn cmd gleich add, ip=remoteadress. Hole den Datensatz, wo das Feld IP den Wert von ip hat und der jünger als 5 Minuten ist. Wenn keiner vorhanden ist, speichere die eingegebenen Werte (oder gib halt aus Eintrag gespeichert), wenn so ein Datensatz vorhanden ist, blocke das Speichern ab.
      Ist das so richtig erfaßt? Wenn ja, dann halt den Code in etwa wie folgt ändern:
      <perl>
       
      if ($cmd eq "add")
      {
             $ip = $_REMOTE_ADDR;
             get "IP==$ip Datum>-:05", "gbook";
             if($IP eq "")
             {
              put undef,"gbook";
              out "<div align=center><font size=-1><b>Eintrag hinzugefügt...</b></font></div>";
             }
             elsif ($IP ne "")
             {
             out "Eintragung leider nicht möglich";
             }
             else
             out "Allgemeiner Datenbankfehler, bitte kontaktieren Sie den Webmaster unter <a href=mailto:webmaster\@deineDomain.de?subject=Fehler bei der Eintragung ins Gästebuch>eMailkontakt</a>;
            }
           </perl>
      

      So ist die Bedingungs-Logik eine andere und es wird immer davon ausgegangen, daß ein Datensatz zunächst eingetragen wird (halt auch ins Feld IP) und bei nochmaligem Eintragsversuch dann geblockt wird.
      Es könnte auch noch sein, daß mit dem Datumszeitvergleich irgendwas nicht stimmt, das ist eh recht kompliziert zu beherrschen. Laß mal Testweise die Filterbedingung fürs Datum weg, obs dann geht.
      Na dann, viel Erfolg und: nicht aufgeben!!!
      CU
      Ruben

     Antworten

    Beitrag von Marco (840 Beiträge) am Montag, 16.April.2001, 12:17.
    Re: Get? ,Datum?, Vergleichsoperatoren? - klar...

      hallo Ruben

      hab es verändert:
      habe es testsweise nur auf die ip reduziert:

      <perl>
           if ($cmd eq "add")
            {
             $adresse = $_REMOTE_ADDR;
             get "IP==$adresse", "gbook";
             if($IP eq "")
             {
              put undef,"gbook";
              out "<div align=center><font size=-1><b>Eintrag hinzugefügt...</b></font></div>";
             }
             elsif ($IP ne "")
             {
              out "IP: $IP";
              out "Eintragung leider nicht möglich";
             }
             else
             {
             out "Allgemeiner Datenbankfehler, bitte kontaktieren Sie den Webmaster unter <a href=mailto:webmaster\@deineDomain.de?subject=Fehler bei der Eintragung ins Gästebuch>eMailkontakt</a>";
             }
            }
      
           </perl>

      hab dem script jetzt vor dem "Eintragung nicht möglich" noch eine ausgabe des Feldes "IP" hinzugefügt

      out "Ip: $IP
      

      und auf verdacht wegen fehler mit der groß und kleinschreibung die variable "$ip" nach "$adresse" umgeändert

      wenn man auf folgenden link geht: (und was einträgt)


      http://baseportal.de/cgi-bin/baseportal.pl?htx=/freewarestation/gbook/view&range=0,10


      bekommt man vor "eintragung n..." seine Ip angezeigt, obwohl die gar nicht in db drin steht.

      die if-anweisungen sind meiner meinung nach ok

      da problem liegt bestimmt bestimmt bei

      get "IP==$adresse", "gbook";
      

      Wie kann der get-befehl eine IP-adresse aus db holen, wobei doch gar keine in der selbigen vorhanden ist???

      Vermutung:
      wahrscheinlich wird, wenn kein eintrag im Feld "IP" vorhanden ist, einfach der wert von $adresse genommen und in den if-anweisungen verarbeitet


      mfg marco

     Antworten

    Beitrag von Ruben (403 Beiträge) am Montag, 16.April.2001, 15:06.
    Re: Get? ,Datum?, Vergleichsoperatoren? - klar...

      High, Marco,
      hab grad mal den Quelltext des Templates angeschaut, da ist das hidden-Feld IP mit dem Wert meiner IP belegt, so daß also immer ein Wert für IP vorhanden ist. (value=$adresse wahrscheinlich)
      Da wäre dann mal der Umweg über die Anzahl der gefundenen Datensätze mittels get zu versuchen - in etwa so:
      if ($cmd eq "add")
      {
             $adresse = $_REMOTE_ADDR;
             get "IP==!$adresse", "gbook";
             if($_amount_query = 0)
             {
              put undef,"gbook";
              out "<div align=center><font size=-1><b>Eintrag hinzugefügt...</b></font></div>";
             }
             elsif ($_amount_query >0 )
             {
              out "IP: $IP";
              out "Eintragung leider nicht möglich";
             }
      
      War nur mal noch son kurzer Gedanke, vielleicht hilfts ja.
      CU
      Ruben

     Antworten

    Beitrag von Marco (840 Beiträge) am Montag, 16.April.2001, 16:27.
    Re: Get? ,Datum?, Vergleichsoperatoren? - klar...

      hai zurück
      übergebe ip nun nicht mehr von add aus

      <perl>
           if ($cmd eq "add")
             {
             $adresse = $_REMOTE_ADDR;
             get "IP==$adresse Datum>-:05", "gbook";
             if($IP eq "")
             {
              put ["Name", $Name, "EMail", $EMail, "WWW", $WWW, "Betreff", $Betreff, "Text", $Text, "IP", $_REMOTE_ADDR], "gbook";
      
              out "<div align=center><font size=-1><b>Eintrag hinzugefügt...</b></font></div>";        }        elsif ($IP ne "")        {         out "IP: $IP";         out "Aus Sicherheitsgründen können sie nur ein Eintrag alle 5 Minuten vornehmen!!";        }        else        {        out "Allgemeiner Datenbankfehler, bitte kontaktieren Sie den Webmaster unter <a href=mailto:webmaster\@deineDomain.de?subject=Fehler bei der Eintragung ins Gästebuch>eMailkontakt</a>";        }       }      </perl>


      ohne Datum>-:05


      ...geht es auch wunderbar, dann kann ich mit der selben ip nur einen eintrag machen

      ich musste "put undef" abändern und jedes feld einzeln eintragen.
       das datum muss ich nicht eintragen seh ich dass richtig????
      

      wenn ich

      Datum>-:05

      hinzufüge werden wieder alle einträge hinzugefügt, egal ob ip schon existent oder zeit des letzten eintrags weniger als 5 min !!

      mfg marco

     Antworten

    Beitrag von Ruben (403 Beiträge) am Montag, 16.April.2001, 15:14.
    Re: Get? ,Datum?, Vergleichsoperatoren? - klar...

      yups, war mir doch der Vergleichsoperator falsch gelungen
      so ists richtiger:
      if($_amount_query == 0)
      (könnte auch gehen if ($_amount_query eq 0) ist aber wohl nicht ganz astrein wegen des Varaiblentyps Zahl bzw. String)
      

     Antworten

    Beitrag von Marco (840 Beiträge) am Dienstag, 17.April.2001, 07:43.
    Re: Get? ,Datum?, Vergleichsoperatoren? - klar...

      weitere lösungsansätze bitte direkt an mich mailen ich fahre jetzt bis zum 21. in den Urlaub

     Antworten


     
 Liste der ersten 150 Einträge:Einklappen Zur Eingabe 
 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.13s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!