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

  • [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

  • #2
    Nun du könntest die IP als Primärschlüssel setzen und

    Code:
    INSERT INTO ... ON DUPLICATE KEY UPDATE ...
    verwenden, oder du machst halt vorher ne SELECT Abfrage ob die IP schon in der Datenbank steht.

    PS: Willkommen hier im Forum!

    Kommentar


    • #3
      Hey,
      du kannst den Referer versuchen auszulesen, oder IP, User-Agent und Zeit zum Versuch hinzuziehen, einen doppelten User zu erkennen.
      "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

      Kommentar


      • #4
        Hm, ok, aber mal ne dumme Frage, wie lese ich die Werte aus der Datenbank aus?
        Ich weiß bis jetzt nur wie man sie einfügt =/
        Wie ich sie dann vergleiche bekomme ich hoffentlich hin xD

        UND:

        Zitat von cycap Beitrag anzeigen
        Nun du könntest die IP als Primärschlüssel setzen und
        Code:
        INSERT INTO ... ON DUPLICATE KEY UPDATE ...
        PS: Willkommen hier im Forum!
        Danke, und wie genau meinst du dass? ON DUPLICATE KEY UPDATE ?
        Noch nie gehört...

        mfg Ind3X

        Kommentar


        • #5
          Diese Infos sind in guten Beispielen im PHP Manual zu finden. mysql verfügt ebenfalls über eine sehr gute Referenz.
          [COLOR="#F5F5FF"]--[/COLOR]
          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
          [COLOR="#F5F5FF"]
          --[/COLOR]

          Kommentar


          • #6
            Servus!

            So wie ich das verstanden habe, willst du einen Log schreiben, der die IP-Adresse und den Browser-Typ des Besuchers in eine Datenbank schreibt... stimmt das so? - Weil eine Abfrage ob ein Eintrag schon vorhanden ist mit der selben IP - das ist einfach!
            Mit ein wenig Php ist die Sache schnell gelöst!

            Versuch dich schlau zu machen, dann klappts bestimmt!


            MfG, dex

            Kommentar


            • #7
              Das Problem ist nicht der Skript, den habe ich schon.
              Ich will nur schauen ob es die IP in der DB schon gibt, und wenn nein, dass sie nur dann eingetragen wird. Und, ja ich versuch gerade mich schlau zu machen in dem ich auf php.de nachfrage >.<

              Kommentar


              • #8
                Und dir wurde doch gesagt was du brauchst, hier die MySQL Manual und sogar auf Deutsch:

                MySQL :: MySQL 5.1 Referenzhandbuch :: 13.2.4.3 INSERT ... ON DUPLICATE KEY UPDATE

                Kommentar


                • #9
                  Hallo!

                  Mache doch einfach eine Select Count() Abfrage nach der IP!

                  Da wird deine Tabelle nach der IP durchsucht und wenn du dann eine if Anweisung schreibst die das noch vergleicht lässt du entweder eintragen in die DB oder eben nicht!

                  Eigentlich kein riesen Ding!
                  Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                  [URL]http://www.lit-web.de[/URL]

                  Kommentar


                  • #10
                    Zitat von litterauspirna Beitrag anzeigen
                    Hallo!

                    Mache doch einfach eine Select Count() Abfrage nach der IP!

                    Da wird deine Tabelle nach der IP durchsucht und wenn du dann eine if Anweisung schreibst die das noch vergleicht lässt du entweder eintragen in die DB oder eben nicht!

                    Eigentlich kein riesen Ding!
                    Wenn er es doch mit einem SELECT machen sollte, wozu dann COUNT() ? Wenn ich ihn richtig verstanden habe soll eine IP-Adresse sowieso nur 1 mal vorkommen und dann brauch man die Datenbank doch nicht mit COUNT() belasten... ein einfaches SELECT 1 FROM table WHERE ip = '192.168.0.1' reicht vollkommen aus...

                    Kommentar


                    • #11
                      Mein jetziger Skript ist:

                      Code:
                      //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.");
                      mysql_query("INSERT INTO logg VALUES('$ip','$host','$os','$browser')") or die(mysql_error());
                      //Weiterverarbeitung des Eintrages
                      $abfrage = "SELECT ip FROM logg";
                      $ergebnis = mysql_query($abfrage);
                      while($row = mysql_fetch_object($ergebnis))
                      {
                      echo "IP: " . $row->ip . "<br>";
                      }
                      Wie überprüfe ich nun (anstatt der Ausgabe), ob die weiter oben ermittlete $ip in dem Array $row enthalten ist? Also dann eben als if Abfrage... wenn ja, soll nichts passieren, wenn doch $ip in die DB eingetragen werden... So hab ich mir das gedacht... klärt mich auf wenn das nicht geht so... xD

                      Kommentar


                      • #12
                        Mit dem SELECT was ich eben bereits genannt habe und einem

                        PHP-Code:
                        if(mysql_num_rows($ergebnis))
                        {
                          
                        // hier der Insert

                        Die while-Schleife kannst du komplett weglassen, du willst die ja nicht ausgeben.

                        Kommentar


                        • #13
                          Sry dass ich mich etwas dumm anstelle aber es geht immernoch nicht.

                          PHP-Code:
                          $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 ip FROM logg";
                          $ergebnis mysql_query($abfrage);
                          if(
                          mysql_num_rows($ergebnis))
                          {
                          mysql_query("INSERT INTO logg VALUES('$ip','$host','$os','$browser')") or die(mysql_error());

                          Kommentar


                          • #14
                            Ich hab ja auch gesagt du sollst die SELECT-Abfrage nehmen die ICH gepostet hab, also

                            SELECT 1 FROM table WHERE ip = '192.168.0.1'
                            bzw.
                            SELECT 1 FROM logg WHERE ip = '$ip'

                            Der Rest sieht doch ganz gut aus. Übrigens: es heisst DAS Script.

                            Kommentar


                            • #15
                              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...

                              Kommentar

                              Lädt...
                              X