Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP | MySQL - Log - Skript

Einklappen

Neue Werbung 2019

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

  • Ind3X
    hat ein Thema erstellt [Erledigt] PHP | MySQL - Log - Skript.

    [Erledigt] PHP | MySQL - Log - Skript

    Ich habe mir aus Langeweile einen kleinen Skript gebaut der IP, Browser, etc ausließt. Auch aus Langeweile habe ich das ganze mal in meine MySQL-DB schreiben lassen. Nun würde mich folgendes interessieren: Wie realisiere ich es, dass er nur einen weiteren Eintrag macht, wenn die IP nicht bereits in der MySQL-DB steht? Momentan wird es bei jedem Site-Reload eingetragen, das missfällt mir aber. Ich hoffe ihr wisst was gemeint ist, ansonsten sagt es bitte, dann formuliere ich um.

    Code:

    Code:
    <?php 
    //Schreibe Ergebnisse in MySQL
    $mysqlhost="XXX";
    $mysqluser="XXX";
    $mysqlpwd="XXX";
    $mysqldb="XXX";
    $connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");
    mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
    mysql_query("INSERT INTO logg VALUES('$ip','$host','$os','$browser')") or die(mysql_error());
    ?>
    mfg Ind3X

  • Ind3X
    antwortet
    Wunderbar, danke für euer aller Hilfe.
    Ich habe eure beiden Ratschläge beherzigt, ich habe das "!" hinzugefügt, und den INSERT-Befehl umgeschrieben. Nun funktioniert alles wie es soll =D Danke an euch, und Entschuldigung wenn ich mich etwas falsch verhalten habe, ich werde es in Zukunft verbessern.

    Auf eine gute Zusammenarbeit

    Ind3X

    Einen Kommentar schreiben:


  • litterauspirna
    antwortet
    Ok hatte ich teilweise doch recht. Nunja ich kenne es aber auch nur so das man die Feldnamen mit angeben muss,habe es nicht anders gelernt,darum fiel mir das auf!

    Einen Kommentar schreiben:


  • cycap
    antwortet
    Zitat von litterauspirna Beitrag anzeigen
    Guten Morgen!

    Bin ich blind oder fehlen hier nicht uch noch die Felder wo etwas rein geschrieben werden muss? Es sind nur die Values vorhanden!

    PHP-Code:
    mysql_query("INSERT INTO logg VALUES('$ip','$host','$os','$browser')") or die(mysql_error()); 
    Müsste das nicht so aussehen?

    PHP-Code:
    mysql_query("Insert Into logg
                                (ip,host,os,browser)     
                     VALUES ('
    $ip','$host','$os','$browser')
                     "
    )or die(mysql_error()); 
    nicht zwingend, wenn man in ALLE Felder reinschreibt muss man diese nicht unbedingt auflisten, ist aber nicht ratsam, denn sobald man nachträglich ein Feld hinzufügt schlägt das query fehl

    Einen Kommentar schreiben:


  • litterauspirna
    antwortet
    Guten Morgen!

    Bin ich blind oder fehlen hier nicht uch noch die Felder wo etwas rein geschrieben werden muss? Es sind nur die Values vorhanden!

    PHP-Code:
    mysql_query("INSERT INTO logg VALUES('$ip','$host','$os','$browser')") or die(mysql_error()); 
    Müsste das nicht so aussehen?

    PHP-Code:
    mysql_query("Insert Into logg
                                (ip,host,os,browser)     
                     VALUES ('
    $ip','$host','$os','$browser')
                     "
    )or die(mysql_error()); 

    Einen Kommentar schreiben:


  • cycap
    antwortet
    Oh neee bin ich doof, das ist ja auch verkehrt rum, so schreibt er nur wenn die IP schon vorhanden ist ARGH

    mach einfach

    PHP-Code:
    if(!mysql_num_rows($ergebnis)) 

    Einen Kommentar schreiben:


  • cycap
    antwortet
    dann ändere mal

    PHP-Code:
    $ergebnis mysql_query($abfrage);
    if(
    mysql_num_rows($ergebnis)) 
    in
    PHP-Code:
    $ergebnis mysql_query($abfrage) or die(mysql_error());
    if(
    mysql_num_rows($ergebnis)>0

    Einen Kommentar schreiben:


  • Ind3X
    antwortet
    Ok, habe mir das nun zu Herzen genommen...

    PHP-Code:
    <?php 
     error_reporting
    (E_ALL);  
     include 
    "inc/config.php"//da stehen nur die mysql-verbindungsdaten
     
    $ip getenv("REMOTE_ADDR");
     
    $os getOS();
     
    $browser getBrowser();
     
    //Schreibe Ergebnisse in MySQL
    $connection=mysql_connect($mysqlhost$mysqluser$mysqlpwd) or die (mysql_error());  
    mysql_select_db($mysqldb$connection) or die (mysql_error());  
    //Weiterverarbeitung des Eintrages
    $abfrage "SELECT 1 FROM logg WHERE ip = '$ip'";
    $ergebnis mysql_query($abfrage);
    if(
    mysql_num_rows($ergebnis))
    {
    mysql_query("INSERT INTO logg VALUES('$ip','$host','$os','$browser')") or die(mysql_error());
    }  
    ?>
    Es werden keine Errors ausgegeben (weder PHP, noch mysql), aber die Werte die in die DB eingetragen werden sollten, werden nicht eingetragen, die Tabelle ist leer.

    mfg Ind3X

    edit: Ich habe jetzt folgendes versucht: In die if-Abfrage habe ich ein else eingebaut, der "Fehler" ausgibt. Das trifft zu, d.h. bei einer leeren Tabelle trifft die Abfrage nicht zu. Das sollte sie aber, oder?

    Einen Kommentar schreiben:


  • cycap
    antwortet
    Hast du das hier nicht gelesen? Jedenfalls hast du mehrere Punkte davon nicht eingehalten!

    Einen Kommentar schreiben:


  • Ind3X
    antwortet
    Zitat von nikosch77-new Beitrag anzeigen
    Und den gesamten Code bitte!
    Sind aber noch ein paar andere Sachen dabei...

    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//DE" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Startseite</title>
    </head>
    
    <body>
    
    <span class="Stil1">Infos:</span><br /><br />
    <table width="287" border="1">
      <tr>
        <td width="80">IP:</td>
        <td width="120">&nbsp;
          <?php 
                echo $_SERVER['REMOTE_ADDR'];
            ?>&nbsp;</td>
      </tr>
      <tr>
        <td>Host:</td>
        <td>&nbsp;<?php 
                    $ip = $_SERVER['REMOTE_ADDR'];
                      $fullhost = gethostbyaddr($ip);
                      $host = preg_replace("/^[^.]+./", "", $fullhost);
                 echo $host; 
            ?>&nbsp;</td>
      </tr>
      <tr>
        <td>Betriebssystem:&nbsp;</td>
        <td>&nbsp;<?php 
                function getOS() {
                if(eregi('Win', $_SERVER['HTTP_USER_AGENT'])) {
                $OS = 'Windows';
                } elseif(eregi('Mac', $_SERVER['HTTP_USER_AGENT']) or (eregi('PPC', $_SERVER['HTTP_USER_AGENT']))) {
                $OS = 'Macintosh';
                } elseif(eregi('Linux', $_SERVER['HTTP_USER_AGENT'])) {
                $OS = 'Linux';
                } elseif(eregi('FreeBSD', $_SERVER['HTTP_USER_AGENT'])) {
                $OS = 'FreeBSD';
                } elseif((eregi('SunOS', $_SERVER['HTTP_USER_AGENT']))) {
                $OS = 'SunOS';
                } elseif((eregi('BeOS', $_SERVER['HTTP_USER_AGENT']))) {
                $OS = 'BeOS';
                } elseif((eregi('OS/2', $_SERVER['HTTP_USER_AGENT']))) {
                $OS = 'OS2';
                } else {
                $OS = 'Andere';
                }
                if($OS == "Windows") {
                if(eregi('95', $_SERVER['HTTP_USER_AGENT'])) {
                $OS = 'Windows 95';
                } elseif(eregi('98', $_SERVER['HTTP_USER_AGENT'])) {
                $OS = 'Windows 98';
                } elseif(eregi('NT 5.1', $_SERVER['HTTP_USER_AGENT'])) {
                $OS = 'Windows XP';
                } elseif(eregi('NT', $_SERVER['HTTP_USER_AGENT'])) {
                $OS = 'Windows NT';
                } elseif((eregi('2000', $_SERVER['HTTP_USER_AGENT']))) {
                $OS = 'Windows 2000';
                } elseif((eregi('visual', $_SERVER['HTTP_USER_AGENT']))) {
                $OS = 'Windows Visual';
                } else {
                $OS = 'Windows';    
                }
                }
            return $OS;
                }
                echo getOS();
            ?>&nbsp;</td>
      </tr>
      <tr>
        <td>Browser:</td>
        <td>&nbsp;<?php
                function getBrowser() {
                if(eregi('MSIE', $_SERVER['HTTP_USER_AGENT'])) {
                $browser = 'IE';
                } elseif(eregi('Netscape', $_SERVER['HTTP_USER_AGENT'])) {
                $browser = 'Netscape';
                } elseif(eregi('Opera', $_SERVER['HTTP_USER_AGENT'])) {
                $browser = 'Opera';
                } elseif(eregi('Firefox', $_SERVER['HTTP_USER_AGENT'])) {
                $browser = 'Firefox';
                } elseif(eregi('Konqueror', $_SERVER['HTTP_USER_AGENT'])) {
                $browser = 'Konqueror';
                } else {
                $browser = 'o.O Unknown Browser O.o';
                }
            return $browser;
                }
            echo getBrowser();
            ?>&nbsp;</td>
      </tr>
    </table>
    <?php 
    
     $ip = getenv("REMOTE_ADDR");
     $os = getOS();
     $browser = getBrowser();
    //Schreibe Ergebnisse in MySQL
    $mysqlhost="";
    $mysqluser="";
    $mysqlpwd=""; 
    $mysqldb="";
    $connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");
    mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
    
    $abfrage = "SELECT 1 FROM logg WHERE ip = '$ip'";
    $ergebnis = mysql_query($abfrage);
    if(mysql_num_rows($ergebnis))
    {
    mysql_query("INSERT INTO logg VALUES('$ip','$host','$os','$browser')") or die(mysql_error());
    }  
    ?>
    </div>
    </body>
    </html>
    Zitat von Wolla Beitrag anzeigen
    Wenn man auf in der Tabelle existierende IPs prüft, kriegt man Leute, die täglich zu Besuch kommen und die gleiche IP haben nicht mit.
    Jau, so war das gedacht...

    Einen Kommentar schreiben:


  • Wolla
    antwortet
    Macht es nicht eher Sinn nur zu prüfen, ob ein Referrer von der eigenen Domain kommt? Falls nein, wird gelogged, falls ja, passiert nichts.
    Wenn man auf in der Tabelle existierende IPs prüft, kriegt man Leute, die täglich zu Besuch kommen und die gleiche IP haben nicht mit.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Aber diese Aussage war hochwertig oder wie?
    geht trozdem nicht... >.< ich bin zu doof dafür...
    Geht nicht geht nicht. Wollte ich eigentlich nur karikieren. Wenn Du meinst Du bist zu doof für php dann werde ich Dich nicht motivieren.
    Dann sage ichs so: Was geht nicht? Und den gesamten Code bitte!

    Einen Kommentar schreiben:


  • Ind3X
    antwortet
    Nee vllt Ideen Äußern warum es nicht geht >.<
    Für ein Moderator eine ziemlich unqualifizierte Frage, die in keiner Weise hilft... =/

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Und was sollen wir jetzt sagen? Dass aus Dir auch noch ein guter Programmierer wird?

    Einen Kommentar schreiben:


  • Ind3X
    antwortet
    anstatt:
    PHP-Code:
    $abfrage "SELECT ip FROM logg"
    hab ich jetzt:
    PHP-Code:
     $abfrage "SELECT 1 FROM logg WHERE ip = '$ip'"
    geht trozdem nicht... >.< ich bin zu doof dafür...

    Einen Kommentar schreiben:

Lädt...
X