Ankündigung

Einklappen
Keine Ankündigung bisher.

Update Problem

Einklappen

Neue Werbung 2019

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

  • Update Problem

    Hallo zusammen,

    ich frage die Url sowie die MD5-Summe aus der DB ab und möchte sie mit der aktuellen Url vergleichen. Das funktioniert auch soweit. Doch wie kann ich die neuen MD5-Werte wieder in die DB bekommen? Leider klappt es mit Update nicht.

    Vielen Dank

    Goof

    PHP-Code:
    <html>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <body>
    <?php

    $username 
    "testuser";
    $password "";
    $database "testDB";


    $db = @new mysqli('localhost'$username$password$database);
    if (
    mysqli_connect_errno()) {
        die (
    'Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
    }

    $sql 'SELECT
        link,
        md5_alt,
        md5_neu,
        test_1
    FROM
        _testsystem'
    ;
    $result $db->query($sql);
    if (!
    $result) {
        die (
    'Etwas stimmte mit dem Query nicht: '.$db->error);
    }
    echo 
    'Die Ergebnistabelle besitzt '.$result->num_rows." Datensätze<br />\n";
    while (
    $row $result->fetch_assoc()) {  // NULL ist äquivalent zu false
        // $row ist nun das Array mit den Werten
        
    $datum date('d.m.Y' $row['test_1']);    
        echo 
    'Die URLs "'.$row['link'].'" wurde am "'.$datum."\" eingetragen<br />\n";
         
         
    //Link auf Veränderungen prüfen
         
    echo '<a href="'.htmlspecialchars($row['link']).'">'.htmlspecialchars($row['link']).'</a>''<br>';
         
         
    $file $row['link'];
         
    $md5_wert md5_file($file);
         echo 
    'MD5-Dateihash von ' $file ': ' md5_file($file);
         
    //echo $md5_wert;
         
         //md5-Wert prüfen
         
    $md5_alt $row['md5_alt'];
         if (
    $md5_wert == $md5_alt)
         echo 
    "<font color='#2FAE4B'><br>md5 hat sich nicht geändert <br></font>";
         else
         echo 
    "<font color='#FF0000'><br>md5 hat sich geändert <br></font>";
         
         
    //Hier klemmt es
         
    mysql_query("UPDATE _testsystem SET md5_alt = $md5_wert");
    }

    $result->close();
    unset(
    $result); // und referenz zum objekt löschen, brauchen wir ja nicht mehr...

    echo "Fertig: Die Urls wurden geprüft!"

    ?>

    </body>
    </html>

  • #2
    Hallo,

    nochmal langsam bitte: was tust du?

    Kommentar


    • #3
      PHP-Code:
                    $sql mysql_query("UPDATE TABELLENNAME SET Spalte = '$wert'  WHERE spalte = '$wert2'"); 
      sollte so gehn..

      Kommentar


      • #4
        Ich nehme den Link (Url) z.B. php.de - das Deutsche PHP-Forum und bilde die MD5 Prüfsumme. Diesen Wert speichere ich in der Datenbank. Anschließend frage ich in einem bestimmten Intervall die Links wieder ab ob sich etwas geändert hat. Wenn sich die Prüfsumme geändert hat wird mir das angezeigt. Anschließend sollen die neuen Werte in der Datenbank gespeichert werden.

        Ich hoffe, dass es nun etwas verständlicher ist.

        Vielen Dank

        Goof

        Kommentar


        • #5
          siehe #3

          Kommentar


          • #6
            Und woran willst du nun festmachen, ob sich die Prüfsumme geändert hat? Wenn du von einem Link die Prüfsumme hast, dann kannst du nur noch abfragen, ob diese Prüfsumme bereits existert oder nicht, wobei letzteres sowohl heißen kann, sie hat sich geändert (was auf Dauer eine Menge Karteileichen gibt) oder sie wurde noch nicht eingetragen.
            Ich verstehe dein Vorhaben noch nicht so ganz.

            Kommentar


            • #7
              Es werden Links von Hand in die DB eingetragen. Diese sollen regelmäßig auf Veränderung überprüft werden.
              Wenn der Link einen geänderten Wert erhält wird der Link manuell geprüft. Es geht nur darum die Seiten nicht alle manuell aufrufen und überprüfen zu müssen.

              Kommentar


              • #8
                Aber woher soll das Programm denn wissen, ob sich ein Link verändert hat?
                Nehmen wir mal an, der Link abc hat sich verändert und heißt jetzt xyz. Das Programm merkt, dass abc nicht mehr da ist, aber woher soll es dann wissen, dass xyz jetzt der neue Link ist? xyz könnte genausogut eben gerade neu eingetragen worden oder der neue Name des Links def sein, der sich ebenfalls verändert hat. Deshalb meine Frage, woran du das festmachst.

                EDIT:
                Ah, ich glaube, jetzt verstehe ich, wie du das meinst. Du speicherst den Link und dazu den Hash. Der Link verändert sich, der Hash nicht. Wenn nun Link nicht mehr zu Hash passt, dann gibt's Meldung.
                Aber wo liegt dann da das Problem? Das ist eine simple SELECT-Abfrage und um den Hash wieder auf den aktuellen Stand zu bringen, musst du nur ein UPDATE machen:
                Code:
                UPDATE `Links` SET `md5Hash` = MD5(`link`) WHERE MD5(`link`) <> `md5Hash`;
                Die WHERE-Bedingung musst du natürlich an deine Bedürfnisse anpassen. Vielleicht arbeitest du ja auch mit IDs.

                Kommentar


                • #9
                  Es gibt mehrere Möglichkeiten die Seiten zu prüfen. Eine andere ist diese:

                  Check website status using php and CURL library - AssistProgramming.com - Programming Tips & Tricks

                  Kommentar


                  • #10
                    Ich schnalls nicht. Wieso soll sicher Link ändern? (Es sei denn Du änderst den in der DB). Allenfalls ändert sich doch der Inhalt am Linkziel... ?!

                    Kommentar


                    • #11
                      Es gibt nur 3 Möglichkeiten:
                      1. die Seite hat sich geändert
                      2. die Seite hat sich nicht geändert
                      3. die Seite existiert nicht mehr

                      Kommentar


                      • #12
                        Also geht doch um den Inhalt! Dann mußt Du auch den md5 vom Inhalt machen!

                        Kommentar


                        • #13
                          Ich rate immer eher zu sha1, statt md5. Bei md5 konnten mittlerweile Kollisionen erzeugt und mit viel Rechenpower auf diese Weise sogar ein Authority-SSL-Zertifikat erzeugt werden.
                          Für reine Prüfsummen zwar immer noch nahezu totsicher, aber man soll ja mit der Zeit gehen, nicht wahr?

                          Kommentar


                          • #14
                            Fehler in #1 sind übrigens fehlende Quotes die Fehlerursache. Nächstes Mal bitte
                            PHP-Code:
                            mysql_query($query) or die(mysql_error()); 

                            Kommentar

                            Lädt...
                            X