PurpleChip Skrevet 15. mars 2011 Del Skrevet 15. mars 2011 (endret) Hola! Har funnet dette php scriptet på nettet, som sender e-post ved filendringer på en ftp. Men jeg vil modifisere det slik at i stedet for å sende e-post, viser den filendringene som tekst på en webside. Noen som kan hjelpe/guide meg i retning? <?php /** * File : ftpMonitor.php * Monitors a remote directory via FTP and emails a list of changes if any are * found. * * @version June 4, 2008 * @author <a href="http://www.franzone.com">Jonathan Franzone</a> */ // Configuration /////////////////////////////////////////////////////////////// $host = 'localhost'; $port = 21; $user = 'anonymous'; $pass = '[email protected]'; $remote_dir = '/'; $cache_file = 'ftp_cache'; $email_notify = '[email protected]'; $email_from = '[email protected]'; // Main Run Program //////////////////////////////////////////////////////////// // Connect to FTP Host $conn = ftp_connect($host, $port) or die("Could not connect to {$host}\n"); // Login if(ftp_login($conn, $user, $pass)) { // Retrieve File List $files = ftp_nlist($conn, $remote_dir); // Filter out . and .. listings $ftpFiles = array(); foreach($files as $file) { $thisFile = basename($file); if($thisFile != '.' && $thisFile != '..') { $ftpFiles[] = $thisFile; } } // Retrieve the current listing from the cache file $currentFiles = array(); if(file_exists($cache_file)) { // Read contents of file $handle = fopen($cache_file, "r"); if($handle) { $contents = fread($handle, filesize($cache_file)); fclose($handle); // Unserialize the contents $currentFiles = unserialize($contents); } } // Sort arrays before comparison sort($currentFiles, SORT_STRING); sort($ftpFiles, SORT_STRING); // Perform an array diff to see if there are changes $diff = array_diff($ftpFiles, $currentFiles); if(count($diff) > 0) { // Email the changes $msg = "<html><head><title>ftpMonitor Changes</title></head><body>" . "<h1>ftpMonitor Found Changes:</h1><ul>"; foreach($diff as $file) { $msg .= "<li>{$file}</li>"; } $msg .= "</ul>"; $msg .= '<em>Script by <a href="http://www.franzone.com">Jonathan Franzone</a></em>'; $msg .= "</body></html>"; $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; $headers .= "To: {$email_notify}\r\n"; $headers .= "From: {$email_from}\r\n"; $headers .= "X-Mailer: PHP/" . phpversion(); mail($email_notify, "ftpMonitor Changes Found", $msg, $headers); } // Write new file list out to cache $handle = fopen($cache_file, "w"); fwrite($handle, serialize($ftpFiles)); fflush($handle); fclose($handle); } else { echo "Could not login to {$host}\n"; } // Close Connection ftp_close($conn); ?> Endret 15. mars 2011 av SaabAero Lenke til kommentar
molty Skrevet 15. mars 2011 Del Skrevet 15. mars 2011 Du må opprette en database da og lagre informasjonen som blir sendt i epost i databasen istedenfor. Og så henter du det ut på en side på siden. Vanskeligere blir det ikke - Molty Lenke til kommentar
PurpleChip Skrevet 15. mars 2011 Forfatter Del Skrevet 15. mars 2011 Jeg må ha database altså? Ingen måte å hente det rett ut fra scriptet? I så fall, hva skal jeg skrive av kode for å få den opp mot databasen? Lenke til kommentar
sxxxe83 Skrevet 17. mars 2011 Del Skrevet 17. mars 2011 Holder det med å endre dette?: //mail($email_notify, "ftpMonitor Changes Found", $msg, $headers); echo $msg; Lenke til kommentar
sxxxe83 Skrevet 17. mars 2011 Del Skrevet 17. mars 2011 (endret) Kastet raskt sammen dette. Modifiserte et guestbook script jeg fant her inne på diskusjon.no en gang. <?php /** * File : ftpMonitor.php * Monitors a remote directory via FTP and emails a list of changes if any are * found. * * @version June 4, 2008 * @author <a href="http://www.franzone.com">Jonathan Franzone</a> */ // Configuration /////////////////////////////////////////////////////////////// $host = 'localhost'; $port = 21; $user = 'anonymous'; $pass = '[email protected]'; $remote_dir = '/'; $cache_file = 'ftp_cache'; $email_notify = '[email protected]'; $email_from = '[email protected]'; // Date $date = time(); // Date format define ('DATE_FORMAT', 'd.m.Y H:i:s'); $date = date(DATE_FORMAT, $date); // Database define ('ENTRIES_DB', "entries.db"); // Main Run Program //////////////////////////////////////////////////////////// // Connect to FTP Host $conn = ftp_connect($host, $port) or die("Could not connect to {$host}\n"); // Login if(ftp_login($conn, $user, $pass)) { // Retrieve File List $files = ftp_nlist($conn, $remote_dir); // Filter out . and .. listings $ftpFiles = array(); foreach($files as $file) { $thisFile = basename($file); if($thisFile != '.' && $thisFile != '..') { $ftpFiles[] = $thisFile; } } // Retrieve the current listing from the cache file $currentFiles = array(); if(file_exists($cache_file)) { // Read contents of file $handle = fopen($cache_file, "r"); if($handle) { $contents = fread($handle, filesize($cache_file)); fclose($handle); // Unserialize the contents $currentFiles = unserialize($contents); } } // Sort arrays before comparison sort($currentFiles, SORT_STRING); sort($ftpFiles, SORT_STRING); // Perform an array diff to see if there are changes $diff = array_diff($ftpFiles, $currentFiles); if(count($diff) > 0) { // Email the changes $msg = "<html><head><title>ftpMonitor Changes</title></head><body>" . "<strong>ftpMonitor Found Changes: ({$date})</strong><ul>"; foreach($diff as $file) { $msg .= "<li>{$file}</li>"; } $msg .= "</ul>"; //$msg .= '<em>Script by <a href="http://www.franzone.com">Jonathan Franzone</a></em>'; $msg .= "</body></html>"; $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; $headers .= "To: {$email_notify}\r\n"; $headers .= "From: {$email_from}\r\n"; $headers .= "X-Mailer: PHP/" . phpversion(); //mail($email_notify, "ftpMonitor Changes Found", $msg, $headers); $id = rand(1000, 9999); $date = time(); $content = $id . '[{**--||--**}]' . $msg . '[{**--||--**}]' . $date . '[{**--||--**}]' . "\n"; // Create if file does not exist if (!file_exists(ENTRIES_DB)) { $fp = fopen(ENTRIES_DB, 'a'); fclose($fp); } if (!$fp = fopen(ENTRIES_DB, 'a')) { echo "<h2>Error!</h2><p>Could not open file.</p>"; exit(); } if (fwrite($fp, $content) === FALSE) { echo '<h2>Error!</h2><p>Could not write to the file.</p>'; exit(); } //echo '<h2>Success!</h2><br />'; fclose($fp); } // Write new file list out to cache $handle = fopen($cache_file, "w"); fwrite($handle, serialize($ftpFiles)); fflush($handle); fclose($handle); } else { echo "Could not login to {$host}\n"; } // Close Connection ftp_close($conn); // Read and output entries.db $entries_array = array_reverse(file(ENTRIES_DB)); foreach ($entries_array AS $lines) { $entry = explode('[{**--||--**}]', $lines); $msg = $entry[1]; $date = $entry[2]; $replace = array('<br /><br />' => '</p><p>'); $msg = strtr($msg, $replace); echo $msg; echo '<hr />'; } ?> Ser ut til å fungere sånn i første omgang... Men har et stort utbedringspotensial Eventuelt legge dette på slutten i en egen php fil "read_db.php". // Database define ('ENTRIES_DB', "entries.db"); // Read and output entries.db $entries_array = array_reverse(file(ENTRIES_DB)); foreach ($entries_array AS $lines) { $entry = explode('[{**--||--**}]', $lines); $msg = $entry[1]; $date = $entry[2]; $replace = array('<br /><br />' => '</p><p>'); $msg = strtr($msg, $replace); echo $msg; echo '<hr />'; } ?> Endret 19. mars 2011 av sxxxe83 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå