|
You last visited: Today at 02:30
Advertisement
Quellcode in Datenbank speichern
Discussion on Quellcode in Datenbank speichern within the Web Development forum part of the Coders Den category.
07/28/2019, 11:24
|
#1
|
elite*gold: 0
Join Date: Jun 2011
Posts: 670
Received Thanks: 118
|
Quellcode in Datenbank speichern
Hallo zusammen,
ich habe ein kleines Problem und irgendwie stehe ich etwas auf dem Schlauch.
Ich habe eine Datei test-input.php. In dieser gebe ich einen URL an. Mit dem URL wird mit folgender Codezeile der Quellcode ausgelesen und in der Datenbank gespeichert.
Code:
$url = $_POST['url'];
$source = file_get_contents($url);
$source_code = htmlspecialchars($source);
$insert = $pdo->prepare("INSERT INTO check_websites (user_id, url, source_code) VALUES (:user_id, :url, :source_code)");
$insert->execute(array('user_id' => $_SESSION['userid'], 'url' => $url, 'source_code' => $source_code));
In der zweiten Datei test.php gebe ich wiederum einen URL an und um den Quellcode auszulesen. Nun soll das Script beide Quellcodes vergleichen und überprüfen, ob sie übereinstimmen.
Code:
$url = $_POST['url'];
$source = file_get_contents($url);
$source_code = htmlspecialchars($source);
$statement = $pdo->prepare("SELECT * FROM check_websites WHERE user_id = :id AND url = :url");
$statement->bindParam(':id', $_SESSION['userid']);
$statement->bindParam(':url', $url);
$statement->execute();
$checkWebsite = $statement->fetch();
if($checkWebsite['source_code'] == $source_code) {
echo "Die Webseite stimmt überein!";
} else {
echo "Die Webseite stimmt nicht überein!";
}
Nur leider stimmen sie nie überein, auch wenn die Seiten definitv gleich sind. Ich denke es liegt an der Speicherung in der Datenbank.
Meine Datenbank sieht so aus:
Hoffe mir kann jemand dabei helfen.
Danke im Voraus.
MfG
Edit:
Erst einmal vielen Dank für eure Hilfe. Habe jetzt umgestellt auf Hash und klappt alles wunderbar. Nur habe ich leider immer noch ein kleines Problem. Immer um 6 Minuten nach der vollen Stunde stellt er eine Änderung an der Webseite fest, obwohl gar keine Änderung stattgefunden hat. Immer nach einer Stunde ändert sich scheinbar etwas auf der Webseite und das Script löst aus. Jetzt ist eben nur die Frage, was es sein könnte. Es ist keine Uhr oder ähnliches auf der Webseite. Vielleicht hat ja jemand einen Tipp.
|
|
|
07/28/2019, 13:14
|
#2
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,115
Received Thanks: 2,436
|
Könnte mehrere Ursachen haben, hast du dir die zwei Sachen mal ausgeben lassen und geschaut wo der unterschied liegt ?
Was genau ist den dein Ziel der Anwendung?
Wieso musst du den Quellcode in der Datenbank speichern, würde es dir nicht auch reichen ein Hash vom Quellcode zu speichern ?
|
|
|
07/28/2019, 14:25
|
#3
|
elite*gold: 0
Join Date: Jun 2011
Posts: 670
Received Thanks: 118
|
Quote:
Originally Posted by False
Könnte mehrere Ursachen haben, hast du dir die zwei Sachen mal ausgeben lassen und geschaut wo der unterschied liegt ?
Was genau ist den dein Ziel der Anwendung?
Wieso musst du den Quellcode in der Datenbank speichern, würde es dir nicht auch reichen ein Hash vom Quellcode zu speichern ?
|
Habe den ursprünglichen Fehler selber beheben können. Lag nur daran, dass die Zeichenlänge der Datenbank nicht ausgereicht hat.
Ich möchte überprüfen, ob irgendwo auf der Webseite eine Änderung zu verzeichnen ist.
Also sobald sich im Quellcode etwas verändert hat zwischen der Speicherung der Webseite in der Datenbank und dem jetztigen Zeitpunkt, möchte ich je nach Ergebnis weitere Scripts ausführen.
Hättest du für diesen Einsatz eine bessere Lösung?
|
|
|
07/28/2019, 16:35
|
#4
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,115
Received Thanks: 2,436
|
Quote:
Originally Posted by .Insane
Habe den ursprünglichen Fehler selber beheben können. Lag nur daran, dass die Zeichenlänge der Datenbank nicht ausgereicht hat.
Ich möchte überprüfen, ob irgendwo auf der Webseite eine Änderung zu verzeichnen ist.
Also sobald sich im Quellcode etwas verändert hat zwischen der Speicherung der Webseite in der Datenbank und dem jetztigen Zeitpunkt, möchte ich je nach Ergebnis weitere Scripts ausführen.
Hättest du für diesen Einsatz eine bessere Lösung?
|
Wie schon geschrieben wäre in dem Fall das speichern eines Hashs besser, da DEUTLICH weniger Speicherplatz verbraucht wird.
Beispiel:
PHP Code:
$hash = hash_file('md5', 'https://www.google.de');
Damit bekommst du immer ein Hash (in dem Fall mit md5), der z.B. mit md5 IMMER 32 Zeichen lang ist, anstatt bis zu unendlich viele Zeichen (bei Google.de z.B 110286 Zeichen).
|
|
|
07/30/2019, 15:08
|
#5
|
elite*gold: 1337
Join Date: Apr 2013
Posts: 6,480
Received Thanks: 3,190
|
Du solltest auf jeden Fall niemals so viele Zeichen in einer MySQL Datenbank speichern.. wenn es wirklich sein muss, nutz eine NoSQL Datenbank wie Redis oder MongoDB.
Gibt sogar eine coole  für Redis.
Aber im Grunde würde ich es so machen, wie @False bereits beschrieben hat.
|
|
|
07/30/2019, 19:18
|
#6
|
elite*gold: 50
Join Date: Nov 2018
Posts: 1,068
Received Thanks: 2,595
|
Quote:
Originally Posted by iMostLiked
Du solltest auf jeden Fall niemals so viele Zeichen in einer MySQL Datenbank speichern.. wenn es wirklich sein muss, nutz eine NoSQL Datenbank wie Redis oder MongoDB.
|
Warum?
|
|
|
08/07/2019, 08:08
|
#7
|
elite*gold: 0
Join Date: Jun 2011
Posts: 670
Received Thanks: 118
|
Erst einmal vielen Dank für eure Hilfe. Habe jetzt umgestellt auf Hash und klappt alles wunderbar. Nur habe ich leider immer noch ein kleines Problem. Immer um 6 Minuten nach der vollen Stunde stellt er eine Änderung an der Webseite fest, obwohl gar keine Änderung stattgefunden hat. Immer nach einer Stunde ändert sich scheinbar etwas auf der Webseite und das Script löst aus. Jetzt ist eben nur die Frage, was es sein könnte. Es ist keine Uhr oder ähnliches auf der Webseite. Vielleicht hat ja jemand einen Tipp.
|
|
|
08/07/2019, 10:20
|
#8
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,115
Received Thanks: 2,436
|
Quote:
Originally Posted by .Insane
Erst einmal vielen Dank für eure Hilfe. Habe jetzt umgestellt auf Hash und klappt alles wunderbar. Nur habe ich leider immer noch ein kleines Problem. Immer um 6 Minuten nach der vollen Stunde stellt er eine Änderung an der Webseite fest, obwohl gar keine Änderung stattgefunden hat. Immer nach einer Stunde ändert sich scheinbar etwas auf der Webseite und das Script löst aus. Jetzt ist eben nur die Frage, was es sein könnte. Es ist keine Uhr oder ähnliches auf der Webseite. Vielleicht hat ja jemand einen Tipp.
|
Kann alles mögliche sein, einfach beide Versionen herunterladen und ein Diff erzeugen.
|
|
|
08/07/2019, 11:46
|
#9
|
elite*gold: 0
Join Date: Jun 2011
Posts: 670
Received Thanks: 118
|
Quote:
Originally Posted by False
Kann alles mögliche sein, einfach beide Versionen herunterladen und ein Diff erzeugen.
|
Es war eine winzige Änderung im Quelltext. Habe jetzt das Script angepasst.
Ich hole mir mittels PHP Simple HTML DOM Parser den plaintext und überprüfe diesen auf Änderungen. Erfüllt für mich den Zweck und so läuft das Script jetzt auch präziser.
Danke für deine Hilfe im Thread!
|
|
|
Similar Threads
|
Hilfe in Cinema 4d ? Datei Speichern mit transparentem hintergrund Speichern ?
09/29/2011 - elite*gold Trading - 10 Replies
^this.
Melde euch bei mir, wenn es klappt, bekommt ihr bisschen egold.
|
[Maps Speichern] Wie kann ich Maps speichern?
10/22/2009 - Metin2 Private Server - 37 Replies
Hey Com,
ich wollte gern mal wissen, wie ich eine map speichern kann?
Ich verstehe das hier nicht: http://img8.imageshack.us/img8/1862/33332332323325 5.jpg
Was muss ich wo rein schreiben:
Als Beisp. Wenn ich nun Map1 Rotes Reich wäre was müsste ich das rein schreiben damit die Map mit allen neuen zB NPC gespeichert wird?
|
All times are GMT +1. The time now is 02:30.
|
|