Script welches über Veränderung auf einer Seite benachrichtigt
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
anpassen
code
datei
email
fenster
form
format
gesendet echo
http
import
mime
nachricht
page
post
taste
text
type
url
windows
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Kommt darauf an wie du das meinst.
Meinst du jetzt eine PHP-Seite, welche sich die Informationen aus der Datenbank nachlädt oder eine statische HTML-Seite? -
ähmm...
ich will nur bescheid wissen wenn sich was geändert hat..... und nicht was.... lässt sich das nich irgendwie machen?
die seite ist http://www.fleurus.de/ -
du kannst doch nen RSS-Feed machen, dann fällt dieser lästige Browser-Spam weg...
-
naja..du könntest einfach den kompletten inhalt der seite in eine datenbank schreiben, und diese wiederum duplizieren.
immer wenn die seite dann aufgerufen wird überprüfst du einfach die aktuelle tabelle mit der duplizierten. wenn diese nicht gleich sind hat sich folglich was geändert und du kannst die benachrichtigung abschicken.
diese lösung ist zwar extrem bescheuert und warscheinlich ziemlich speicherintensiv, aber mehr konnte ich mit deinen angaben nicht anfangen.
mfg -
Die Lösung ist auch insofern bescheuert, weil sie nicht auf das einging, was der Frager wollte. Wenn er das Per iemail haben will, dann heißt es, er will nciht extra die seite ansurfen und das nachprüfen... sonst würden die erstelluungsdaten in den Beiträgen völlig ausreichen.
-
Um hier mal was konstruktives rein zu bringen. Ich hab mich mal hingesetzt und schnell was geschrieben. Das Script besteht aus 3 Dateien: einem Pythonscript das auf ein Update der Seite prüft, ein Phpscript welches die Email schickt und einer Datei welche einfach nur die letzte Version der Seite speichert.
Das Pythonscript script.py:
#!/usr/bin/env python watchurl="www.fleurus.de" # Die URL welche das Script ueberwachen soll. Format: www.example.com. kein http und kein / phpurl="ketchupfleck.lima-city.de" # Die URL auf der das mail.php script liegt. Format: www.example.com. kein http und kein / import httplib, difflib, urllib # Get new version conn = httplib.HTTPConnection(watchurl) conn.request("GET", "/index.html") r1 = conn.getresponse() newdata = r1.read() conn.close() newdata=newdata.splitlines(1) # Read old version fobj = open("old", "r") olddata=[] for line in fobj: olddata.append(line) fobj.close() #Make sure both versions end with \n olddata[-1]=olddata[-1].rstrip("\n")+"\n" newdata[-1]=newdata[-1].rstrip("\n")+"\n" if olddata != newdata: #find differences diff = difflib.ndiff(olddata, newdata) diff =''.join(diff) #Send mail via php params = urllib.urlencode({'msg': diff}) headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"} conn = httplib.HTTPConnection(phpurl) conn.request("POST", "/mail.php", params, headers) response = conn.getresponse() data = response.read() conn.close() print data #update old file fobj = open("old", "w") for line in newdata: fobj.write(line) fobj.close() else: print "Keine Unterschiede gefunden. Es wird keine Email verschickt."
Das Phpscript mail.php:
<?php $addr="ketchupfleck@example.com"; // Deine Email Adresse echo "Verbindung aufgebaut... "; $msg=$_POST["msg"]; if(!empty($msg)){ $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From: noreply@example.com' . "\r\n"; $msg="Die von dir überwachte Webseite http://www.fleurus.de hat sich geändert.\n\nLog:\n".$msg; // Mail it mail($addr, "http://www.fleurus.de hat sich geändert", $msg, $headers) echo "Gesendet!"; echo "\n---------------------------------------------------\n"; echo"Nachricht: \n".$msg; } else{ echo "Keine Nachricht!"; } ?>
Die Datei mit der lezten Version der Seite namens old:
<html><head> <title>Fleurus Verlag</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <style type="text/css"> <!-- .text { font-family: Arial, Helvetica, sans-serif; font-size: 20px; color: #FF9933; font-weight: bold; } --> </style> </head> <body bgcolor="#990000" marginheight="0" marginwidth="0"> <table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%"> <tr> <td valign="bottom" width="50%"> <div align="center"><img src="images/drachen_frei.jpg" height="452" width="247"></div></td> <td valign="top" width="50%"> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p align="left" class="text">Unsere Website ist zur Zeit in der Bearbeitung!<br> Wir bitten um Verständnis!</p> </td> </tr> </table> </body></html>
Im Pythonscript muss du noch die 2 Variablen phpurl und watchurl anpassen, im Phpscript musst du die Variable $addr anpassen. Ich denke es sollte eigentlich ganz verständlich sein. Denk dran das die meisten Mails von lima nicht ankommen. Lad die PHP also am besten auf einen Paid-Hoster.
lg Ketchup -
@sebulon
Syber's Vorschlag muss man nicht yedes Mal aufrufen, sondern einfach mit einem Cronjob realisieren. Fertig.
@ketchupfleck
Die Mails von Lima sind nach meiner Erfahrung eigtl wesentlich zuverlässiger geworden. Habe zumindest seit den letzten 3 Monaten keine Einzige mehr verpasst.
Liebe Grüße
- VampireSilence -
kann man die phyton auch zu ner exe machen?
was soll ich mit old machen?
wenn ich das script.py starte schließt es sich gelich wieder...
Beitrag zuletzt geändert: 30.8.2009 20:09:58 von super-geil -
Anscheinend verwendest du Windows
Hier kannst du Python runterladen:
http://www.python.org/download/
Ich würde ja gerne ein PHP-Script schreiben, aber ich habe gerade leider keine Zeit und keine Lust Dass wäre einfacher...
Beitrag zuletzt geändert: 30.8.2009 20:22:06 von deutscher -
kann man die phyton auch zu ner exe machen?
Ja geht, aber ich wüsste nicht wofür man das braucht. Wenn du python drauf hast, dann müsstest du sie doch auch so ausführen können?
was soll ich mit old machen?
Die muss einfach in den selben Ordner wie die script.py. Aber ich habe gerade das script eh noch ein Stück verbessert, also wird die Datei jetzt angelegt wenn sie nicht existiert.
wenn ich das script.py starte schließt es sich gelich wieder...
Jopp hab nicht gewusst dass du Windows benutzt. Du musst jetzt eine Taste drücken um das Fenster zu schliessen. Man könnte es theoretisch auch noch so lösen, dass du das Fenster nur eine bestimmte Zeit siehst (z.B. 5 Sekunden) und es sich dann automatisch schliesst. Wie du willst.
Neue Version:
script.py:
#!/usr/bin/env python watchurl="www.fleurus.de" # Die URL welche das Script ueberwachen soll. Format: www.example.com. kein http und kein / phpurl="ketchupfleck.lima-city.de" # Die URL auf der das mail.php script liegt. Format: www.example.com. kein http und kein / import httplib, difflib, urllib # HttpConnection conn = httplib.HTTPConnection(watchurl) conn.request("GET", "/index.html") r1 = conn.getresponse() newdata = r1.read() conn.close() newdata=newdata.splitlines(1) # Read old version olddata=[] try: fobj = open("old", "r") for line in fobj: olddata.append(line) fobj.close() oldfileexists=True except IOError: print "Datei nicht gefunden." olddata.append(" ") # Fill olddata with dummy oldfileexists=False #Make sure both versions end with \n olddata[-1]=olddata[-1].rstrip("\n")+"\n" newdata[-1]=newdata[-1].rstrip("\n")+"\n" if olddata != newdata: #find differences diff = difflib.ndiff(olddata, newdata) diff =''.join(diff) if oldfileexists: #Send mail via php params = urllib.urlencode({'msg': diff, 'page':watchurl}) headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"} conn = httplib.HTTPConnection(phpurl) conn.request("POST", "/mail.php", params, headers) response = conn.getresponse() data = response.read() conn.close() print data else: print "Datei wird angelegt." #update old file fobj = open("old", "w") for line in newdata: fobj.write(line) fobj.close() else: print "Keine Unterschiede gefunden. Es wird keine Email verschickt." i=raw_input("Druecke eine beliebiege Taste.")
mail.php:
<?php $addr="ketchupfleck@example.com"; // Deine Email Adresse echo "Verbindung aufgebaut... "; $msg=$_POST["msg"]; $page=$_POST["page"]; if(!empty($msg)){ $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From: noreply@example.com' . "\r\n"; $msg="Die von dir überwachte Webseite ".$page." hat sich geändert.\n\nLog:\n".$msg; // Mail it mail($addr, $page." hat sich geändert", $msg, $headers) echo "Gesendet!"; echo "\n---------------------------------------------------\n"; echo"Nachricht: \n".$msg; } else{ echo "Keine Nachricht!"; } ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage