[MySQL/PHP] Counter-Reloadsperre sperrt nicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [MySQL/PHP] Counter-Reloadsperre sperrt nicht

    Nabend!

    kann mir jemand sagen warum MySQL bei jedem Aufruf einen Eintrag in die Tabelle "datalog" schreibt?
    es sollte doch eigentlich nur wenn die genutzte IP bereits genutzt wird?

    Das ganze ist aus einer Funktion herauskopiert!
    $logip => aktuelle IP
    $cntip => Zeit bis zum erneuten hochzählen von "besucher" & "zugriffe"
    $zeit => time();
    PHP-Code:
    mysql_query("DELETE FROM datalog WHERE time<'".($zeit-86400)."' OR time>'".($zeit+100)."' OR ip=''");
    if(
    ereg ("(^[0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3}$)",$logip)) {
        
    $ip_check mysql_num_rows(mysql_query("SELECT id FROM datalog WHERE ip='".$logip."' AND time<'".$cntips."'"));
    } else 
    $ip_check=0;
    if(
    $ip_check>0){
        
    mysql_query("UPDATE statistik SET zugriffe=zugriffe+1");
        
    mysql_query("UPDATE datalog SET time='".$zeit."' WHERE ip='".$logip."' AND time>'".$cntips."'");
    } elseif (
    $ip_check==0) {
        
    mysql_query("UPDATE statistik SET besucher=besucher+1,zugriffe=zugriffe+1");
        
    mysql_query("INSERT INTO datalog SET ip='".$logip."',time='".$zeit."'");

    Mehr Info? einfach Fragen ;-)

  • #2
    Ich kann zwar jetzt nicht direkt auf genau das Problem eingehen, aber ich würde den Counter einfach mal so probieren:

    PHP-Code:
    //IP holen und mit DB abgleichen
    //Wenn IP noch gesperrt
    if(@mysql_num_rows($ip_gesperrt_abfrage)>=1) {

        
    //Zeit für die die IP gesperrt wird
        
    $ipsperre=x;
        
        
    //Gesammtsperrzeit
        
    $sperrzeit=$ip_gesperrt['datum']+$ipsperre;
        
        
    //Wenn IP noch gesperrt und Zeit abgelaufen
        
    if($sperrzeit<=time()) {

            
    //IP freigeben
            
    @mysql_query(...);

            
    //Besucherzahl um 1 erhöhen
            
    @mysql_query(...);

            
    //IP wieder sperren
            
    $ip_sperren_befehl="INSERT INTO ipsperren VALUES ('','$ip','$datum')";
            @
    mysql_query($ip_sperren_befehl);
        }
    }

    //Wenn IP nicht (mehr) gesperrt
    else {

        
    //Besucherzahl um 1 erhöhen
        
    @mysql_query(...);

        
    //IP sperren
        
    $ip_sperren_befehl="INSERT INTO ipsperren VALUES ('','$ip','$datum')";
        @
    mysql_query($ip_sperren_befehl); 
    Nur mal ein Vorschlag wie mans (simpel) machen kann

    Kommentar


    • #3
      Danke, Du hast mich auf den richtigen Weg gebracht ;-)

      Kommentar


      • #4
        ich darf doch bitten, die @'s rauszunehmen.

        Kommentar


        • #5
          Original geschrieben von penizillin
          ich darf doch bitten, die @'s rauszunehmen.
          muss ja nicht sein wenn man ein or die(mysql_error()) anhängt was aber auch nicht ersichtlich ist
          [color=blue]MfG Payne_of_Death[/color]

          [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
          [color=red]Merke:[/color]
          [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

          Murphy`s Importanst LAWS
          Jede Lösung bringt nur neue Probleme
          Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
          In jedem kleinen Problem steckt ein großes, das gern raus moechte.

          Kommentar

          Lädt...
          X