User-log-script

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

  • User-log-script

    Hallo zusammen,

    ich melde mich wiedereinmal... weil ich ein recht langes script geschrieben habe... Es ging eine Zeit lang, da habe ich es für mich schon fast abgeschlossen, dann wollte ich noch eine Funktion mehr einbauen und es ging nicht mehr...

    Könnt ihr da einmal "kurz" reinschauen, falls ihr grad lust & Zeit habt..?

    Es ist wohl irgendeine Abfrage nich richtig, denn mysql_fetch_object() verursacht einen Fehler... Aber ich bin langsam am verzweifeln, weil ich den Fehler nicht finde!

    Die URL:
    http://web136m.dynamic-kunden.ch/nob.../userloger.php

    Die Fehler die es meldet:
    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/www/web136/html/nobody08/TESTS/userloger.php on line 41

    Das Script:
    PHP-Code:
    <?php
    /* NOCH ZU TUN:
    - evt. parameter zur function anstatt [include('db_connect.php');] (z. 13)
    */

    /*
     * Userloger by nobody08
     * Mar 05
     */
    function userstats($db_table='userstats',$max_time='50'){
        
    // connecting :)
        
    include('db_connect.php');
        
    $create_table=mysql_query("CREATE TABLE IF NOT EXISTS `$db_table`
     (`id` int(5) unsigned NOT NULL AUTO_INCREMENT,
     `page` varchar(50) NOT NULL, 
    `ip` varchar(20) NOT NULL, `provider` varchar(100) NOT NULL, 
    `timestamp` varchar(200) NOT NULL, `counter` int(3) NOT NULL 
    default '0', PRIMARY KEY (`id`) , KEY `id` (`id`) ) TYPE = MYISAM ;"
    );
        
    // abfrage
        
    $query="SELECT * FROM '$db_table'";
        
    $result=mysql_query($query);
        
    // settings
        
    $new_ip=$_SERVER['REMOTE_ADDR'];
        
    $new_provider=gethostbyaddr($_SERVER['REMOTE_ADDR']);
        
    $new_timestamp=time();
        
    $new_page=$_SERVER['PHP_SELF'];

        
    // alte löschen
        
    $max_length=time()-60*60*24*$max_time// = time() von vor $max_time Tagen
        
    echo '$max_time >> '.$max_time;
        echo 
    '<br>$max_length >> '.$max_length;
        echo 
    '<br>'.date("[d.m.Y H:i]",$max_length);
        
    $DELETE="DELETE FROM $db_table WHERE timestamp<'$max_length' AND page='$new_page'";
        
    $delete=mysql_query($DELETE);
        
    mysql_error();
        
        
    // Alle-lösch-funktion (NUR VON DIESER SEITE)
        
    $_GET['reset'];
        global 
    $reset;
        if(
    $reset){
            
    $DELETE="DELETE FROM $db_table WHERE page = '$new_page'";
            
    $delete=mysql_query($DELETE) or die("<br>Fehler bei der 'Alles-löschen-Funktion'");
        }
        
        
    // user hinzufügen
        
    while($row=mysql_fetch_object($result)){
            if(
    $row->ip==$new_ip){
                
    $new_timestamp=$row->timestamp.' '.$new_timestamp;
                
    $new_counter=$row->counter;
                
    $new_counter=$new_counter+1;
                
    $query="UPDATE $db_table SET counter='$new_counter', timestamp='$new_timestamp' WHERE ip='$new_ip'";
                
    $vorhanden='1';
            }
        }
        if(!
    $vorhanden){$query="INSERT INTO $db_table (page,ip,provider,timestamp) VALUES 
    ('
    $new_page','$new_ip','$new_provider','$new_timestamp')";}
        
    $enter=mysql_query($query);
        
    mysql_error();
        
        
        
    // abfrage aktualisieren
        
    $query="SELECT * FROM '$db_table'";
        
    $result=mysql_query($query);
        
    // vorhandene auslesen & ausgeben
        
    echo "<body><br><b>Einträge</b><br>\n
    <table style=\"padding: 20px 2px 20px 2px; border: 1px solid #000000;\">\n<tr>\n 
    <td>Datum/Zeit</td>\n <td>IP</td>\n <td>Provider</td>\n  <td>h.o.</td>\n</tr>"
    ;
        while(
    $row=mysql_fetch_object($result)){
            
    $page=$row->page;
            
    $counter=$row->counter;
            
    $timestamp=$row->timestamp;
            if(
    $page==$new_page){ // Dass es nur Zugriffe der aktuellen Seite anzeigt
                
    if($counter!=='0'){
                    
    $tmp_timestamp=explode(' ',$timestamp);
                    for(
    $i='0';$i<=$counter;$i++){
                        
    $timestamp=date("[d.m.Y H:i]",$tmp_timestamp[$i]);
                        if(
    $i=='0'){echo "\n<tr style=\"height: 50px; border: 1px dashed black;\">\n
      <td><div style=\"overflow: auto; width: 150px; height: 50px; border: #222222;\">
    $timestamp";}
                        else {echo 
    '<br>'.$timestamp;}
                    }
                    
    $counter=$counter++;
                    echo 
    "</div></td>\n  <td>$row->ip</td>\n  <td>$row->provider</td>\n  <td>$counter</td>\n</tr>";
                }
                else {
                    
    $timestamp=date("[d.m.Y H:i]",$row->timestamp);
                    echo 
    "\n<tr style=\" height: 50px; border: 1px dashed black;\">\n
      <td>
    $timestamp</td>\n  <td>$row->ip</td>\n  <td>$row->provider</td>\n</tr>";
                }
            }
        }
        echo 
    "\n</table>\n";
        echo 
    '<br><a href="'.$_SERVER['PHP_SELF'].'?reset=1">Alle Daten dieser Seite löschen!</a></body>';
    // ENDE function userstats

    // AUSFÜHRUNG
    userstats();
    ?>
    Gruss & Danke im voraus für JEDE Hilfe...
    nobody08

    Ach ja: In der Datei db_connect.php sollte kein Fehler sein, ich verbinde da mit dem mySQL-Server und habe hinten "die()" angehängt, wenn es dort einen Fehler hätte, ginge es also gar nicht weiter...
    Nobody's perfect...!!

  • #2
    PHP-Code:
    $query="SELECT * FROM '$db_table'"
    was sollen die hochkommata dort?
    Kissolino.com

    Kommentar


    • #3
      selbst backticks sind bei einer sinnvollen benennung von tabellen und spalten (ohne keywords) unsinnig.
      1101100 1101001 1100110 1100101 1101001 1110011 1100001 1100010 1101001 1110100 1100011 1101000

      /(bb|[^b]{2})/

      Kommentar


      • #4
        statt hier unmengen von unumgebrochenem Quelltext zu posten, würde es wohl mehr sinn machen, mal vernünftiges Debugging zu betreiben! mysql_error hilft! (Siehe auch Forumregeln!)

        Kommentar


        • #5
          also, danke euch, es war das mit den hochkommatas...
          Die hatte ich erst dort reingetan, als es schon dauernd einen Fehler meldete, da dachte ich es liege an dem. Aber komischerweise geht es jetzt ohne die, aber ich mag mich nicht erinnern, dass ich seither etwas gemacht habe... (seit ich die gesetzt habe)

          und @TobiaZ
          Ich hatte sicher über 5 min. lang die Zeilen umgebrochen und fragte mich am schluss wirklich, warum nicht einfach die Vorschau so breit sein kann wie es dann nacher rauskommt, und warum es nicht einfach scrollbars gibt beim codefenster... bei langen Codes kann man ja das fenster unten auch begrenzen, dann ist das Problem auch weg, dass man immer zuerst runter scrollen muss um die vertikal-scrollbar zu bewegen...

          Und das mit dem mysql_error() hatte nicht viel mehr geliefert (sogar gar nichts, hab ich in erinnerung) und das error_report(E_ALL) oder wie das heisst hatte ich auch schon ausprobiert (sogar als ich noch nicht daran dachte, hier zu posten kam ich hierher um diese Zeile zu hohlen, weil ich sie nicht mehr wusste ^^) aber das hat nur gemeldet, dass POST-checkbox-namen(/variablen) nicht definiert sind, also brachte es mir auch nix...
          Nobody's perfect...!!

          Kommentar


          • #6
            mysql_error hätte sicher eine ausgabe gebracht wenn du es richtig verwendet hättest.

            Kommentar


            • #7
              Ich hatte es zuerst direkt nach der Fehlerlinie, also nach der while-schleife, wo ich auch das fetch_object drin hatte, das den Fehler gab weil $result glaub nicht gültig war. Weil aber ja die while-schlaufe gar nie durchlaufen wurde, weil die Bedingung false war kam es gar nie zum mysql_error.
              ABER ich hatte dann auch $row=mysql_fetch_object($result) in eine eigene Zeile getan und danach mysql_error gehabt, aber dann kam auch nix genaueres.

              UND, wenn ich mich richtig erinnere habe ich nach jeder query mysql_error gesetzt, also auch dort wo $result definiert wurde.

              Gruss

              Edit: ne stimmt nich ganz... habe nachgeschaut und überall ausser bei der Problem-Zeile ein mysql_error() gefunden...
              Zuletzt geändert von nobody08; 30.03.2005, 20:59.
              Nobody's perfect...!!

              Kommentar

              Lädt...
              X