:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte
Unternehmen im
Anbieterverzeichnis von SELFPHP
:: SELFPHP Forum ::
Fragen rund um die Themen PHP? In über
120.000 Beiträgen finden Sie sicher die passende
Antwort!
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
:: Qozido ::
Die Bilderverwaltung mit Logbuch für
Taucher und Schnorchler.
|
|
Änderungen an einer Webseite mittels Hash-Wert feststellen |
Beispielaufgabe
Änderungen an einer Webseite feststellen.
Beschreibung
Die PHP5 Klasse websiteUpdate() ermittelt den Hashwert ( mittels sha256 ) einer Website. Speichert man diesen Hash-Wert in einer Datenbank, kann zu einer späteren Zeit ein Vergleich angestellt werden, um zu ermitteln, ob die Seite sich verändert hat. Mit diesem Hash-Wert können nicht die Veränderungen ermitteln werden, sondern lediglich der Zustand einer Änderung. Neben Webseiten können z.B. auch Dateien auf Änderungen hin überprüft werden.
Datenbank-Layout
--
-- Tabellenstruktur für Tabelle `website-check-update`
--
CREATE TABLE IF NOT EXISTS `website-check-update` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`url` varchar(254) NOT NULL,
`hash` varchar(64) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `url` (`url`),
UNIQUE KEY `hash` (`hash`)
) ENGINE=MyISAM AUTO_INCREMENT=1 ; |
<?PHP
class websiteUpdate {
/**
* @var string Hash
*/
private $hashalgo = '';
/**
* @var string Hash
*/
private $hashput = '';
/**
* @var string Source
*/
private $source = '';
/**
* Constructor
*
*/
function __construct( ) {
}
/**
* Holt den Inhalt der Website und bildet daraus
* einen Hash mit SHA256
*
* @param string $website Website URL
*
* @return bool True
*/
public function fetchWebsite ( $website = NULL ) {
$this->source = file_get_contents ( $website );
$this->hashalgo = hash('sha256',$this->source);
return true;
}
/**
* Gibt die komplette Website aus
*
* @return string Der HTML-Quellcode
*/
public function getWebsite () {
return $this->source;
}
/**
* Gibt den Hashwert der Website zurück
*
* @return string Hash-Wert
*/
public function getHash () {
return $this->hashalgo;
}
/**
* Speichert den Wert z.B. aus einer Datenbank
* zwischen
*
* @return string Hash-Wert
*/
public function putHash ( $oldHash ) {
$this->hashput = $oldHash;
return true;
}
/**
* rüft Hashwert der Website zurück
*
* @return string Hash-Wert
*/
public function compareHash ( ) {
if ( $this->hashput == $this->hashalgo ) {
return true;
}
else {
return false;
}
}
}
?>
|
Anwendungsbeispiel
include("websiteUpdate.php");
// Aktueller Hash-Wert von
// http://www.selfphp.de/code_snippets/files/hash.html
$hashFromDatabase = '22cf68c5b87fd0b76e456df78229e114a48dfdd189e3ebafe9a2e7325b5a8765';
$url = 'http://www.selfphp.de/code_snippets/files/hash.html';
$update = new websiteUpdate( );
$update -> fetchWebsite( $url );
$update -> putHash( $hashFromDatabase );
if ( $update -> compareHash() ) {
echo 'Website ist unverändert';
}
else {
echo 'Website wurde geändert';
// Veränderten Hashwert holen
$newHash = $update -> getHash( );
echo '<br>' . $newHash;
}
|
Ausgabebeispiel: Browseransicht
|
|
|
|
|
|