Re: Zeitsperre - Reloadsperre ? - 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 Sander (8133 Beiträge) am Montag, 19.November.2001, 21:18.
    Re: Zeitsperre - Reloadsperre ?

      für dieses script gibt es eine extradb, die sperre heisst - ist die angelegt?

      Sander


    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 Montag, 19.November.2001, 16:51.
    Zeitsperre - Reloadsperre ?

      Hallo, wie kann ich verhindern, dass jemand in meiner Kontaktanzeigen-Seite jemand nach der Aufgabe einer Anzeige erneut eine Anzeige aufgeben kann ? Habt ihr dafür eine Lösung ? Nennt man das Reloadsperre ?

      Besten Dank. Gerrit.

     Antworten

    Beitrag von Gerrit (81 Beiträge) am Montag, 19.November.2001, 18:24.
    Re: Zeitsperre - Reloadsperre ?

      Hallo, nochmal. Ich habe mich im Forum umgesehen und bin auf die Lösung von Stefan Skalla von Donnerstag, 5.Juli.2001, 17:55 gestossen und habe versucht, sie zu realisieren.

      Zunächst habe ich die Felder ip ( Text, text ), jetztzeit ( Zahl, text ), zeitschranke ( Zahl, text ) und zeit ( Zahl, text ) in meiner Datenbank definiert.

      Dann habe ich folgenden Perlcode in meinen Quelltext eingefügt :

      <perl>
      $sek=1000;
      $gesperrt="0";
      $ip=$_REMOTE_ADDR;
      $jetztzeit=time;
      $zeitschranke=$jetztzeit - $sek;
      out "IP: ".$ip."<br>";
      get "ip==$ip","sperre";
      if ($zeit > $zeitschranke)
      {
      $gesperrt="1";
      }
      if ($gesperrt eq "0")
      {
      put ["ip",$ip,"zeit",$jetztzeit],"sperre";
       del "zeit<$zeitschranke","sperre";
      }
      out "Zeitschranke: ".$sek." Sekunden<br>";
      if ($gesperrt eq "0")
      {
      out "";
      }
      else
      {
      out "Bitte nur eine Anzeige aufgeben";
      }
      </perl>
      

      Dann kamen allerdings folgende Fehlermeldungen :

      IP: 195.93.64.14

      [ Fehler: init: /usr/local/httpd/baseportal/li/eb/liebesrose.de/kontakte/sperre.fields konnte nicht geöffnet werden ]

      [ Fehler: sel: Feld (ip) in /liebesrose.de/kontakte/sperre nicht vorhanden

      Ursache: Das Feld ip wurde in der Datenbank nicht definiert. Vielleicht haben Sie sich bei der Abfrage auch nur verschrieben?

      Lösungen: 1. Korrigieren Sie Ihre Abfrage. 2. Gehen Sie in Ihren privaten Bereich (Anmelden), wählen Sie die entsprechende Datenbank aus, klicken Sie auf 'Felder' und fügen Sie das gewünschte Feld hinzu. ]

      [ Fehler: init: /usr/local/httpd/baseportal/li/eb/liebesrose.de/kontakte/sperre.fields konnte nicht geöffnet werden ]

      [ Fehler: init: /usr/local/httpd/baseportal/li/eb/liebesrose.de/kontakte/sperre.fields konnte nicht geöffnet werden ]

      [ Fehler: sel: Feld (zeit) in /liebesrose.de/kontakte/sperre nicht vorhanden

      Ursache: Das Feld zeit wurde in der Datenbank nicht definiert. Vielleicht haben Sie sich bei der Abfrage auch nur verschrieben?

      Lösungen: 1. Korrigieren Sie Ihre Abfrage. 2. Gehen Sie in Ihren privaten Bereich (Anmelden), wählen Sie die entsprechende Datenbank aus, klicken Sie auf 'Felder' und fügen Sie das gewünschte Feld hinzu. ]
      Zeitschranke: 1000 Sekunden

      Was habe ich falsch gemacht ?

      Dabei wundert es mich, dass das System sagt ich hätte das Feld "zeit" nicht in meiner Datenbank definiert, obwohl ich es definiert habe.

      Danke. Gerrit.

     Antworten

    Beitrag von Sander (8133 Beiträge) am Montag, 19.November.2001, 21:18.
    Re: Zeitsperre - Reloadsperre ?

      für dieses script gibt es eine extradb, die sperre heisst - ist die angelegt?

      Sander

     Antworten

    Beitrag von Gerrit (81 Beiträge) am Montag, 19.November.2001, 22:28.
    Re: Zeitsperre - Reloadsperre ?

      Danke für den Tip. Ich bin nämlich mittlerweile ganz schön am rotieren. Ich habe schon hin und her probiert. Ich bin aber nicht darauf gekommen, dass man dafür eine eigene db anlegen muss. Werde die db "sperre" gleich mal anlegen.

     Antworten

    Beitrag von Gerrit (81 Beiträge) am Montag, 19.November.2001, 23:12.
    Re: Zeitsperre - Reloadsperre ?

      Ich habe im verzeichnis Verzeichnis: HOME/kontakte  (richtiges Verzeichnis ? ) die db "sperre2" ( Lesen ) angelegt mit den Feldern :

      Ändern | Löschen 1 ip Text text
      Ändern | Löschen 2 zeit Zahl text

      und habe folgenden Perlcode im Quelltext eingegeben ( ich bin mir nicht sicher, ob Perlcode noch richtig, da ich versucht habe, ihn an meine Belange anzupassen ) :

      <perl>
      $sek=2000;
      $gesperrt="0";
      $ip=$_REMOTE_ADDR;
      $jetztzeit=time;
      $zeitschranke=$jetztzeit - $sek;
      get "ip==$ip","sperre";
      if ($zeit > $zeitschranke)
      {
      $gesperrt="1";
      }
      if ($gesperrt eq "0")
      {
      put ["ip",$ip,"zeit",$jetztzeit],"sperre";
       del "zeit<$zeitschranke","sperre";
      }
      if ($gesperrt eq "1")
      {
      out "Bitte nur eine Anzeige aufgeben !";
      }
      </perl>
      

      Nun gibt es allerdings folgende Fehlermeldung. Woran mag das liegen ? ( Ich vermute am falschen Perlcode )

      [ Fehler: (perl) in /liebesrose.de/kontakte/kontakte: [Mon Nov 19 22:58:34 2001] (eval 217): Unrecognized character \240 at (eval 217) line 15. ]

      Danke für eure Hilfe. Gerrit.

     Antworten

    Beitrag von Gerrit (81 Beiträge) am Dienstag, 20.November.2001, 00:44.
    Re: Zeitsperre - Reloadsperre ?

      Sorry, mittlerweile habe ich schon wieder hin- und herprobiert, aber irgendwo ist noch der Wurm drin. Ich habe inzwischen auch herausgefunden, dass ich bei der letzten Anfrage an euch, vergessen hatte, für die db "sperre" die Rechte "Daten hinzufügen - ändern und löschen" zu vergeben. Habe ich nachgeholt. Inzwischen ist mir auch klar, dass die db "sperre" im richtigen Verzeichnis ist.

      Nun sieht es folgendermassen aus :

      Die Felder in der db "sperre" sind :

      Ändern | Löschen 1 ip Text text
      Ändern | Löschen 2 zeit Zahl text

      und der Perlcode lautet :
      <perl>
      #Zeitschranke definieren:
      $sek=7200;
      $gesperrt=0;
      #IP abfragen:
      $ip=$_REMOTE_ADDR;
      #IP in der Datenbank suchen:
      #Pruefen, ob schon vorhanden:
      get "ip==$ip","sperre";
      #wenn ja, ob das innerhalb der letzten 2 Stunden war:
      if (($_amount>0) && ($zeit > time-$sek))
      #wenn ja, sperre den Typen:
      {
      $gesperrt=1;
      }
      #Wenn er nicht gesperrt wird:
      if ($gesperrt==0)
      {
      #loesche nebenbei alte Eintraege:
      del "zeit < ".(time - $sek),"sperre";
      #merke dir die IP und die aktuelle Zeit:
      put ["ip", $ip, "zeit", time], "sperre";
      }
      </perl>
      

      Es werden zwar keine Fehler mehr angezeigt, aber der alte Datensatz wird auch nicht gelöscht, wenn jemand kurz nacheinander zwei Kontaktanzeigen aufgibt. Irgendetwas ist bestimmt mit meinem Perlcode falsch. Meine Vorstellung geht dahin, dass jemand zwar mehrere Kontaktanzeigen aufgeben kann, dafür aber jeweils die ältere Kontaktanzeige gelöscht wird.

      Ausserdem möchte ich im Perlcode noch eine Meldundungen einfügen, die später auf dem Bildschirm erscheinen sollen, wenn jemand mehrere Anzeigen eingeben will. Die Meldung soll dann lauten : "Die alte Anzeige wurde gelöscht." Wo muss ich das einfügen ?

      Danke für eure Hilfe. Gerrit.

     Antworten

    Beitrag von Oliver ;-) (439 Beiträge) am Dienstag, 20.November.2001, 09:16. WWW: www.verwitwet.de
    Re: Zeitsperre - Reloadsperre ?

      Hallo Gerrit,

      wenn ich das richtig gelesen habe, willst du eine Kontaktanzeige löschen. Dein del-Befehl bezieht sich aber auf einen Eintrag in der DB "sperre".

      Aber irgendwo musst du den ip-Eintrag mit dem Eintrag in der KontaktDB verbinden.

      Oliver ;-)

     Antworten

    Beitrag von Gerrit (81 Beiträge) am Dienstag, 20.November.2001, 11:06.
    Re: Zeitsperre - Reloadsperre ?

      Hallo, ich habe auch erkannt, dass ich zuerst den alten Datensatz in der db "kontakte" löschen muss, falls schon eine Kontaktanzeige mit derselben ip ( db "sperre ) vorhanden ist. Anschliessen soll ein neuer Datensatz mit den Feldern : >>> 1. ) Überschrift  2.) Name  3.) Geschlecht  4.) Ort  5. ) EMail  6.) Telefon  7.) Postleitzahl ( 1. Zahl ) 8.) Deine Webseite  9.) Text  10.) Foto  11.) Datum <<< in die db "kontakte" geschrieben werden. Mir fehlen allerdings die Perlkenntnisse, um es selber zu machen. Es müsste wohl auch eine Relation zwischen der db "sperre" und der db "kontakte" hergestellt werden ,damit der ip in der db "sperre" eindeutig ein Datensatz in der db "kontakte" zugeordnet werden kann. Ich weiss nur nicht, wie man die Relation einrichtet, welche Felder man miteinander in Relation setzt. ( ip aus "sperre" mit der id aus "kontakte" ? ) Das wäre natürlich die Ideallösung. Es wäre klasse, wenn ihr mir helfen könntet, dieses hinzubekommen.

      Die einfachere Lösung wäre natürlich, wenn man demjenigen, der eine zweite Kontaktanzeige mit der gleichen ip aufgibt, mitteilt, dass er bitte nur eine Anzeige aufgeben soll ( bzw. dass er erst in x Stunden eine neue Anzeige aufgeben kann). Wenn ich es recht verstanden habe, dann sollte der untenstehende Perlcode dieses ja leisten. Aber es funktioniert nicht. Man kann munter eine Anzeige nach der nächsten, mit derselben ip aufgeben, ohne dass man daran gehindert wird. Irgendetwas ist sicherlich noch am Perlcode falsch.

      Danke für eure Mühen. Gerrit.

      Felder der db "sperre" :
      Ändern | Löschen 1 ip Text text
      Ändern | Löschen 2 zeit Zahl text

      Felder der db "kontakte" :
      Ändern | Löschen 1 Ueberschrift --- text Grösse=50
      Ändern | Löschen 2 Name --- text Grösse=20
      Ändern | Löschen 3 Geschlecht Text option Zeilen=1, Werte=Mann   Frau   Paar
      Ändern | Löschen 4 Ort Text text Grösse=20
      Ändern | Löschen 5 EMail --- EMail Eingabe nötig=Ja
      Ändern | Löschen 6 Telefon --- text Grösse=15
      Ändern | Löschen 7 Postleitzahl ( 1. Zahl ) Zahl text Grösse=1
      Ändern | Löschen 8 Deine Webseite --- Link Endung=Keine, In neuem Fenster öffnen=Ja
      Ändern | Löschen 9 Text --- textarea Spalten=40, Zeilen=5
      Ändern | Löschen 10 Foto --- Link Endung=Keine, In neuem Fenster öffnen=Ja
      Ändern | Löschen 11 Datum --- Datum Eingabe=_ze, Ausgabe=$w, $t.$m.$j, $s:$mi0
       
      Und hier der jetzige Perlcode :
      <perl>
      #Zeitschranke definieren:
      $sek=7200;
      $gesperrt=0;
       #IP abfragen:
      $ip=$_REMOTE_ADDR;
       #IP in der Datenbank suchen:
      #Pruefen, ob schon vorhanden:
      get "ip==$ip","sperre";
      #wenn ja, ob das innerhalb der letzten 2 Stunden war:
      if (($_amount>0) && ($zeit > time-$sek))
       #wenn ja, sperre den Typen:
      {
      $gesperrt=1;
      }
      #Wenn er nicht gesperrt wird:
      if ($gesperrt==0)
      {
       #loesche nebenbei alte Eintraege:
      del "zeit < ".(time - $sek),"sperre";
      #merke dir die IP und die aktuelle Zeit:
      put ["ip", $ip, "zeit", time], "sperre";
      }
      </perl>
      

     Antworten

    Beitrag von Oliver ;-) (439 Beiträge) am Dienstag, 20.November.2001, 11:30.
    Re: Zeitsperre - Reloadsperre ?

      Du kannst dir doch die Relation auch sparen, wenn du in der KontaktDB das Feld "ip" und eventuell auch "time" hinzufügst.

      Dann machst du die Prüfung so:
      ...
      get "ip==$ip","kontakte"; #oder wie die DB heißt
      if (($_amount>0) && ($zeit > time-$sek))
      {
      $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)
      }
      
      ...

      Anstelle des Hinweistextes kannst du auch einen bereits vorhanden Datensatz löschen und den neuen eintragen lassen.

      Oliver ;-)

     Antworten

    Beitrag von Gerrit (81 Beiträge) am Dienstag, 20.November.2001, 14:20.
    Re: Zeitsperre - Reloadsperre ?

      Ich habe den untenstehenden Perlcode in den Quelltext eingefügt. Wenn ich eine Anzeige eintippe und abschicke, dann wird die Anzeige zweimal veröffentlicht. Tippe ich eine zweite Anzeige mit der gleichen ip ein und schicke sie ab, dann wird auch die zweite Anzeige zweimal veröffentlicht. Es wird keine alte Anzeige gelöscht und die Meldung "Du kannst nur eine Kontaktanzeige aufgeben !" erscheint nicht.

      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 ? Geht es also doch nicht ohne Relationen ? Welche Felder der db "sperre" und "kontakte" sollte man dann in Relationen setzen ? Wo müsste ich dann überall den Anhang ("sperre";) auf die db "sperre" mit einfügen ? ( bevor ich es vergesse oder falsch mache )

      <perl>
      #Zeitschranke definieren:
      $sek=7200;
      $gesperrt=0;
      #IP abfragen:
      $ip=$_REMOTE_ADDR;
      #IP in der Datenbank suchen:
      #Pruefen, ob schon vorhanden:
      get "ip==$ip","kontakte";
      #wenn ja, ob das innerhalb der letzten 2 Stunden war:
      get "ip==$ip","kontakte"; #oder wie die DB heißt
      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>
      

      Felder der db "sperre" :
      Ändern | Löschen 1 ip Text text 
      Ändern | Löschen 2 zeit Zahl text 

      Felder der db "kontakte" :
      Ändern | Löschen 1 Ueberschrift --- text Grösse=50 
      Ändern | Löschen 2 Name --- text Grösse=20 
      Ändern | Löschen 3 Geschlecht Text option Zeilen=1, Werte=Mann Frau Paar 
      Ändern | Löschen 4 Ort Text text Grösse=20 
      Ändern | Löschen 5 EMail --- EMail Eingabe nötig=Ja 
      Ändern | Löschen 6 Telefon --- text Grösse=15 
      Ändern | Löschen 7 Postleitzahl ( 1. Zahl ) Zahl text Grösse=1 
      Ändern | Löschen 8 Deine Webseite --- Link Endung=Keine, In neuem Fenster öffnen=Ja 
      Ändern | Löschen 9 Text --- textarea Spalten=40, Zeilen=5 
      Ändern | Löschen 10 Foto --- Link Endung=Keine, In neuem Fenster öffnen=Ja 
      Ändern | Löschen 11 Datum --- Datum Eingabe=_ze, Ausgabe=$w, $t.$m.$j, $s:$mi0

      Tausend Dank für eure Mühen. Gerrit.

     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!