Ankündigung

Einklappen
Keine Ankündigung bisher.

Reload sperre counter

Einklappen

Neue Werbung 2019

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

  • Reload sperre counter

    hi,

    habe für meinen counter eine reloadsperre geschrieben nur leider sperrt sie nicht so richtig
    wäre nett wenn jemand mal schauen könnte wo der fehler liegt
    Code:
    <?
    include("db_connect.php");
    ?>
    <html>
    <body>
    <?php
    $ip=getenv("REMOTE_ADDR"); //Ip adresse ermitteln
    $uhr=date(U);
    $anfru="SELECT Datum FROM ip";
    $ergu=mysql_query($anfru);//gespeicherte uhrzeiten holen
    $zuhr=mysql_fetch_row($ergu);//zeit ins array
    $anfrip="SELECT ip FROM ip";
    $ergip=mysql_query($anfrip);
    $zip=mysql_fetch_row($ergip);//ip in array schreiben
    $num_rows=mysql_num_rows($ergip);//anzahl der datensätze ermitteln
    $anfrage="SELECT * FROM counter";
    $ergebniss=mysql_query($anfrage);
    $zeile=mysql_fetch_row($ergebniss); //ergebniss in array schreiben 
    for ($a=0;$a<=$num_rows;$a++) {
    	if ($ip==$zip[$a] && ($uhr+360)<$zuhr[$a])
    		{$aktuell=$zeile[0];
    		
    	}
    	else {
    		$aktuell=$zeile[0]+1;
    		$eintrag="INSERT INTO ip (ip, Datum) VALUES 
    		('$ip', '$uhr')";
    		$eintragen=mysql_query($eintrag);
    	}
    }
    $anfrage="UPDATE counter SET zahl='";
    $anfrage.=$aktuell;
    $anfrage.="'"; //UPDATE Anfrage zusammensetzen
    mysql_query($anfrage)or die ("Fehler bei Datenbank Update");
    mysql_close($db);//Datenbank schliessen
    //jetzt folgt die Anzeige des Zählerstandes
    $laenge=strlen($aktuell);
    for($a=0;$a<$laenge;$a++) {
    	$zahl=substr($aktuell,$a,1);
    	if($zahl=="0") {
    		echo "[img]images/counter/00.gif[/img]";
    	}
    habe mal den rest am schluss weggelassen
    habe gerade gesehen er speichert nur xx.xx von der ip, was für ein feld muss es in der mysql sein damit er die ip komplett speichern kann?

  • #2
    nimm mal Varchar 30 für die IP

    Gruss Simon
    Der G-Translator

    Kommentar


    • #3
      er speichert alles wunderbar ab nur irgendiwe scheint was in meinen if net zu stimmen denn er verlässt die abfrage immer mit else.
      und warum verdoppelt sich der wert $num_rows jedesmal beim neuladen? also zB. 7,15,31,63???

      Kommentar


      • #4
        *schieb*

        wiss keiner woran es liegen könnte?

        Kommentar


        • #5
          Das liegt nicht an deiner if-Abfrage, sondern an deiner komischen for-Schleife. Der Array $zip hat genau ein Element: die erste ip aus der Tabelle ip. Genauso, wie der Array $zuhr nur das erste Datum aus ip und $zeile den Inhalt des ersten Satzes aus counter enthält. Also könnte höchstens der erste Durchlauf der Schleife True ergeben. Alle anderen sind immer False und werden entsprechendneu in die DB eingetragen. Deshalb die Verdoppelung von $num_rows.
          Da ich aus deinem Code leider nicht erkennen kann, was du erreichen willst, kann ich dir auch nicht sagen wie du das besser lösen könntest.
          Gruss
          L

          Kommentar


          • #6
            ich versuch zu verhindern das wenn jemand innerhald von einer bestimmten zeit wieder auf die seite geht das der counter nochmal erhöht wird.
            die for schleife dachte ich muss sein um alle einträge der datenbank durchzusuchen

            Kommentar


            • #7
              prinzip:
              Code:
              $sql = "SELECT id FROM tabelle WHERE ip ='" . $_SERVER['REMOTE_ADDR']. "'";
              
              $res = mysql_query($sql) or die (mysql_error());
              
              if ( mysql_num_rows($res) == 0 )  
              {
                  # counter erhöhen
              }
              du kannst das auch mit ner session lösen .. einfach in der session speichern, ob mit dieser session_id schon einmal der counter erhöht wurde oder nicht ..

              grüße ben ..
              [b][url=http://www.benjamin-klaile.de]privater Blog[/url][/b]

              Kommentar


              • #8
                danke für die antwort werde es morgen mal testen

                Kommentar

                Lädt...
                X