php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.10.2005, 17:56  
nicobischof
Gast
 
Beiträge: n/a
Standard Counter mit PHP und MySQL

Hi,

habe folgendes Problem:
Ich habe einen Counter in PHP und MyQL. Dieser zeichnet die IP-Adresse, Tag, Monat, Jahr, Stunde und Minute auf.

Jetzt soll der Counter eine Zeitsperre von 30min bekommen, dass also nur dann aufgezeichnet wird, wenn der letzte Besuch 30min zurück liegt.

Im Moment ist es so, dass jede IP nur einmal aufgezeichnet wird.


PHP-Code:
<?php
 $sql 
"SELECT * FROM counter WHERE IP='$ip'"
$result mysql_query($sql); 
$count mysql_num_rows($result); 
    if (
$count == 1
    {
    
#Ausgabe wenn die IP bereits in der Datenbank vorkommt 

#Ausgabe wenn die IP bereits in der Datenbank vorkommt  Ende
    
}
    else
    {
    
#IP eintragen
    
$db_link mysql_connect('localhost''user'xxx);

    if(
$db_link)
    {
         

         if(
mysql_select_db(MYSQL_DATABASE$db_link))
         {
             echo 
"Die Datenbank user wurde ausgewählt";
         }
       
    }
    else
    {
        echo 
"Es konnte keine Verbindung aufgebaut werden";
    }


    
$sql="
       INSERT INTO counter
        (IP,Browser,Host,System,Referer,Tag,Monat,Jahr,Stunde,Minute)
    VALUES
        ('$ip','$browser','$host','$system','$referer','$tag','$monat','$jahr','$stunde','$minute')"
;
       
mysql_query($sql) or die(mysql_error()."
    Query: "
.$sql);
    }

?>

Wie kann man das anstellen, dass man überprüft ob seit dem letzten Besuch 30min vergangen sind?

Im Prinzip würde ich jetzt einfach die Minuten nehmen und es anhand der Minuten machen. Aber was ist wenn der Besuch um 17:40 war und der nächste Besuch um 18:50? Dann sind es in den Minuten nur 10min unterschied.

Hat da jemand eine Idee?
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.10.2005, 18:03  
Gast
 
Beiträge: n/a
Standard

versuchs mal mit timestamps
php: time()
sql: NOW()
 
Alt 20.10.2005, 18:11  
Erfahrener Benutzer
 
Registriert seit: 06.09.2004
Beiträge: 188
web2
Standard

reciht dir auch eine funktion die die differenz nur eines tages bewältigen kann?
alos tage werden nicht berücksichtigt?
solch eine kann ich dir gerne geben...

aber es wäre wie karl-150 schon schreibt besser timestamps zu nehmen.
__________________
Es gibt 10 Wege Binärcode zu verstehen. Ganz oder garnicht
web2 ist offline  
Alt 20.10.2005, 18:27  
nicobischof
Gast
 
Beiträge: n/a
Standard

Hi,

habs mit timestamps probiert. Hat auch anfangs funktioniert. Wurde in der angegebenen Zeit nix neues hinzugefügt. Aber nach ablauf der Zeit wurde dann bei jedem Seitenabruf ein neuer Datensatz eingefügt, also wie vorher. Habe wohl einen Fehler gemacht (Anfänger )

PHP-Code:
<?php

     $sql 
"SELECT * FROM counter WHERE IP='$ip'"
$result mysql_query($sql); 
$count mysql_num_rows($result); 
    if (
$count == 1
    {
    
#Ausgabe wenn die IP bereits in der Datenbank vorkommt 
    
$sql "SELECT
                IP,
                Browser,
                Host,
                System,
                Referer,
                Tag,
                Monat,
                Jahr,
                Stunde,
                Minute,
                timestamp
            FROM
                counter
            ;"
;

    
    
$result mysql_query($sql) OR die(mysql_error());
     
       
$row mysql_fetch_assoc($result);
       
$dbtimestamp=$row['timestamp'];
if(
$timestamp-$row['timestamp']<=120)
{
}
else
{


$sql="
       INSERT INTO counter
        (IP,Browser,Host,System,Referer,Tag,Monat,Jahr,Stunde,Minute,timestamp)
    VALUES
        ('$ip','$browser','$host','$system','$referer','$tag','$monat','$jahr','$stunde','$minute','$timestamp')"
;
       
mysql_query($sql) or die(mysql_error()."
    Query: "
.$sql);
    
    ;
}


#Ausgabe wenn die IP bereits in der Datenbank vorkommt  Ende
    
}
    else
    {
    
#Username noch frei
    
$db_link mysql_connect('localhost''user''4e2ffa8a');

    if(
$db_link)
    {
         

         if(
mysql_select_db(MYSQL_DATABASE$db_link))
         {
             echo 
"Die Datenbank user wurde ausgewählt";
         }
       
    }
    else
    {
        echo 
"Es konnte keine Verbindung aufgebaut werden";
    }


    
$sql="
       INSERT INTO counter
        (IP,Browser,Host,System,Referer,Tag,Monat,Jahr,Stunde,Minute,timestamp)
    VALUES
        ('$ip','$browser','$host','$system','$referer','$tag','$monat','$jahr','$stunde','$minute','$timestamp')"
;
       
mysql_query($sql) or die(mysql_error()."
    Query: "
.$sql);
    }
    

?>
 
Alt 20.10.2005, 18:36  
nicobischof
Gast
 
Beiträge: n/a
Standard

kann mir niemand helfen?
 
Alt 20.10.2005, 18:57  
nicobischof
Gast
 
Beiträge: n/a
Standard

ich gebs auf, bleibt die seite vorerst ohne counter
 
Alt 20.10.2005, 19:22  
Gast
 
Beiträge: n/a
Standard

na dann :wink:
 
Alt 20.10.2005, 19:59  
nicobischof
Gast
 
Beiträge: n/a
Standard

joa
 
Alt 20.10.2005, 20:10  
Gast
 
Beiträge: n/a
Standard

falls du es doch noch versuchen willst
ip als PRIMARY KEY setzen

/edit:
wenn du einen timestamp benutzt, kannst du dir die anderen datumsfelder natürlich sparen
hab mir nicht angesehen, welchen zweck dein script erfüllen soll, bedenke aber das ips meist dynamisch generiert werden, falls du sie als useridentifikation nutzen willst ...
 
Alt 20.10.2005, 21:43  
Erfahrener Benutzer
 
Registriert seit: 30.11.2004
Beiträge: 202
I-Spy
Standard

PHP-Code:
<?php
$timeDif 
time() - 60*30// 30 min

$sql "SELECT * FROM counter WHERE IP='$ip' AND date >= '$timeDif'";
$result mysql_query($sql); 
$count mysql_num_rows($result);

if(
$count == 0) { /* Neuen User eintragen */ }
else { 
/* Bereits vor weniger als 30min eingetragen */ }
?>
date speicherst du beim Eintragen als "timestamp" ab: $date = time(); (In die Datenbank eintragen!)

Gruß Dima
I-Spy ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] MySQL - ERROR 1044 bei erstellen einer Datenbank _youngenterpriser_ Datenbanken 2 05.02.2008 17:56
ein einfacher counter mit reload-/IP-sperre, basierend auf MySQL XraYSoLo PHP-Fortgeschrittene 7 09.10.2007 12:55
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
PHP / MySQL | Counter IP strpos Problem ... EoD PHP Tipps 2006 2 29.03.2006 14:27
[Erledigt] Mysql 4.1.x unter php 4.3.9 Datenbanken 3 15.11.2005 13:49
Schnittstelle zwischen PHP und MySQL klappt net !!! Datenbanken 16 16.10.2005 14:24
[Erledigt] not allowed to connect to this MySQL server PHP Tipps 2005-2 2 23.09.2005 18:34
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
MYSQL läuft nur wenn /tmp auf 777 Datenbanken 5 06.07.2005 08:38
mysql root passwort vergessen Datenbanken 1 29.05.2005 11:33
Access denied for user: '@localhost' / SYSTEM@localhost Datenbanken 0 10.11.2004 20:35
counter per mysql..(help) PHP Tipps 2004 1 13.10.2004 12:43
Counter zeigt nach ca. 2-3 Stunden fehler an PHP Tipps 2004 2 26.08.2004 20:08
[Erledigt] PHP5 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a m p; MySQL Datenbanken 5 01.08.2004 05:47
Problem mit einem Counter JeeZ PHP Tipps 2004 6 18.06.2004 13:36

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql counter, counter php mysql, php counter referer, php counter mysql, counter mit mysql, php mysql counter, php seitenzähler nur 1 mal am tag, counter per monat in php, php sql time counter, counter mysql, einfacher counter php mit mysql, ip counter mysql, mysql einfacher besucherzähler ohne ip, html mysql counter, besucherzähler php 24 stunden ip sperre, php mysql_query zähler, php einfacher besucherzähler sql, einfacher counter php sql, php counter für tag monat, besucherzähler tag monat jahr

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:40 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.