Automatisch Email Senden falls Datei auf Server älter als 6h

gixnetwork

Erfahrenes Mitglied
Hallo Liebe Tutorials Gemeinde

Vor ab ein nützliches Script zum überprüfen ob eine bestimmte Datei, auf dem server, "aktuell" ist oder "veraltet".

PHP:
<?php
  $filename = 'wswin-status.html';
  $aktualisierung = 300;          // Zeitabstand der normalen Aktualisierung in Sekunden
  $diff_max = $aktualisierung+330; // 330 Sekunden Zeitzugabe bis Offlineanzeige
  if(file_exists($filename))
  {
  $diff = time()-filemtime($filename);
  if ($diff_max>$diff)
  {
  echo '<div align="left"><font size="3"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#228B22">Online</font></b></font></div>';
  }
  else
  {
  // Tatsächliche Offline-Zeit (Toleranz-Wert diff_max wird abgezogen)
  $offline_time_real = $diff-$diff_max;
  // Absolute Anzahl Tage, Stunden, Minuten ausrechnen
  $offline_time_tage = floor($offline_time_real/86400);
  $offline_time_minuten = floor($offline_time_real/60);
  $offline_time_stunden = floor($offline_time_real/3600);
  // Rückrechnen und Abziehen für die korrekte Anzeige
  $offline_time_stunden = $offline_time_stunden-($offline_time_tage*24);
  $offline_time_minuten = $offline_time_minuten-($offline_time_tage*1440)-($offline_time_stunden*60);
  $offline_time_sekunden = $offline_time_real-($offline_time_tage*86400)-($offline_time_stunden*3600)-($offline_time_minuten*60);
  if($offline_time_real>=86400)
  {
  $offline_string = $offline_time_tage.' T., '.$offline_time_stunden.' Std., '.$offline_time_minuten.' Min. und '.$offline_time_sekunden.' Sek.';
  }
  elseif($offline_time_real>=3600)
  {
  $offline_string = $offline_time_stunden.' Std., '.$offline_time_minuten.' Min. und '.$offline_time_sekunden.' Sek.';
  }
  elseif($offline_time_real>=60)
  {
  $offline_string = $offline_time_minuten.' Min. und '.$offline_time_sekunden.' Sek.';
  }
  else
  {
  $offline_string = $offline_time_sekunden.' Sek.';
  }
  echo '<div align="left"><font size="3"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#FF3333">Offline seit '.$offline_string.'</font></b></font></div>';
  }
  }
  else echo 'ERROR: Datei '.$filename.' existiert nicht!';
?>

-----------------------------

So habe jetzt dieses super script, welches ich umbau möchte.
per Cronjob soll diese php datei alle 6 Stunden "geöffnet" werden.
Fals dann die datei "$filename" älter als 300 secunden ist soll ein Email an kontakt@wetter-erzenholz.ch gesendet werden.

Ist bestimmt machbar. Aber ich kann das nicht.

Ich weiss nich wie ich get_post ohne auf einen button auslöst.

Danke Für die hilfe.

ps.Gruss an Saftmeister haste einen Beneidenswerten Beruf: Source-Code-Verhackstückeler
 
So stelle ich mir das vor:
PHP:
.

 $offline_string = $offline_time_minuten.' Min. und '.$offline_time_sekunden.' Sek.';
 }
 else
 {
 $offline_string = $offline_time_sekunden.' Sek.';
 }
 echo '<form action="email.php" method="post"><input type="submit" name="submit" value="Submit" />';
 }
 }
 else echo 'ERROR: Datei '.$filename.' existiert nicht!';
?>

so jergend wie, Email Formular verstehe ich den code.
Wie mache ich submit, ohne auf ein batten klicken zu müssen?

ps. ja ich solte mit css arbeiten statt mit <font size="3"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#FF3333">


GAIL DIE HALBE MIETE....
<body onload="submit()"> Der richtige Ansatz? ... ich hoffs..
so xamp starten und ausprobieren
 
Also habe 2 dateien. 1. für cronjob 2. zum email senden.

email-alarm.php
PHP:
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<?php
  $filename = 'test.txt';
  $aktualisierung = 60;          // Zeitabstand der normalen Aktualisierung in Sekunden
  $diff_max = $aktualisierung+330; // 330 Sekunden Zeitzugabe bis Offlineanzeige
  if(file_exists($filename))
  {
  $diff = time()-filemtime($filename);
  if ($diff_max>$diff)
  {
  echo '<body bgcolor="#FFFFFF" text="#000000">';
  }
  else
  {
  echo '<body onload="submit()">';
  }
  }
  else echo '<body bgcolor="#FFFFFF" text="#000000">';
?>

<form action="send-mail-offline.php" method="post" accept-charset="iso-9951-1">
   <label for="massage">off</label>
<input  type="text" name="cf_name">
<input class="w-button" type="submit" value="Senden">
</form>
</body>
</html>


send-mail-offline.php
PHP:
<html>
<head>
<title>-</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-9951-1">
</head>
<body>
<?php
$field_massage = $_POST['cf_name'];

$mail_to = 'kontakt@wetter-erzenholz.ch';
$subject = 'OFFLINE Wetter-Erzenholz';
$body_message = 'Ist offline';

$mail_status = mail($mail_to, $subject, $body_message);

if ($mail_status)
{
echo 'okey';
}
else
{
echo 'fehler';
}
?>
</body>
</html>



Was mach ich denn falsch?

Reverenz in Englisch http://stackoverflow.com/questions/11131603/auto-submit-form-using-php

 
So habs geschaft! PHP kanns nicht ohne Javascript.

email-alarm.php
HTML:
<html>
<head>
<title>Alarm</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
  $filename = 'test.txt';
  $aktualisierung = 60;          // Zeitabstand der normalen Aktualisierung in Sekunden
  $diff_max = $aktualisierung+300; // 300 Sekunden (5.min) Zeitzugabe bis Offlineanzeige
  if(file_exists($filename))
  {
  $diff = time()-filemtime($filename);
  if ($diff_max>$diff)
  {
  echo 'Okey - Wetterstation Online.';
  }
  else
  {
  echo '
<form action="send-mail-offline.php" method="post">
<input type="text" name="cf_name"" value="Offline" />
<input type="submit" />
</form>
';
  }
  }
  else echo 'Datei nicht gefunden';
?>
<SCRIPT LANGUAGE="JavaScript">document.forms[0].submit();</SCRIPT>
</body>
</html>


send-mail-offline.php


HTML:
<html>
<head>
<title>-</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-9951-1">
</head>
<body>
<?php
$field_massage = $_POST['cf_name'];

$mail_to = 'kontakt@wetter-erzenholz.ch';
$subject = 'OFFLINE Wetter-Erzenholz';
$body_message = 'Wetterstation ist '.$field_massage."\n";

$mail_status = mail($mail_to, $subject, $body_message);

if ($mail_status)
{
echo 'Wetterstation Offline - Wahrnung per E-Mail an '.$mail_to.' gesendet.';
}
else
{
echo 'Wetterstation Offline - Fehler - Keine Wahrnung per E-Mail Verschickt!';
}
?>
</body>
</html>

So.
Jetzt möchte ich noch die zeit einbauen.
Im Email Nachricht soll stehen seit wann die test.txt datei nicht mehr erneuert wurde!

.$offline_string. wird im email angezeizt, und nicht der zeitwert.

Hat jemand ne idee?
 
So. Ich betrachte das ganze als GELÖST

email-alarm.php
HTML:
<html>
<head>
<title>Alarm</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
  $filename = 'test.txt';
  $aktualisierung = 60;          // Zeitabstand der normalen Aktualisierung in Sekunden
  $diff_max = $aktualisierung+300; // 300 Sekunden (5.min) Zeitzugabe bis Offlineanzeige
  if(file_exists($filename))
  {
  $diff = time()-filemtime($filename);
  if ($diff_max>$diff)
  {
  echo 'Okey - Wetterstation Online.';
  }
  else
  {
  // Tatsächliche Offline-Zeit (Toleranz-Wert diff_max wird abgezogen)
  $offline_time_real = $diff-$diff_max;
  // Absolute Anzahl Tage, Stunden, Minuten ausrechnen
  $offline_time_tage = floor($offline_time_real/86400);
  $offline_time_minuten = floor($offline_time_real/60);
  $offline_time_stunden = floor($offline_time_real/3600);
  // Rückrechnen und Abziehen für die korrekte Anzeige
  $offline_time_stunden = $offline_time_stunden-($offline_time_tage*24);
  $offline_time_minuten = $offline_time_minuten-($offline_time_tage*1440)-($offline_time_stunden*60);
  $offline_time_sekunden = $offline_time_real-($offline_time_tage*86400)-($offline_time_stunden*3600)-($offline_time_minuten*60);
  if($offline_time_real>=86400)
  {
  $offline_string = $offline_time_tage.' T., '.$offline_time_stunden.' Std., '.$offline_time_minuten.' Min. und '.$offline_time_sekunden.' Sek.';
  }
  elseif($offline_time_real>=3600)
  {
  $offline_string = $offline_time_stunden.' Std., '.$offline_time_minuten.' Min. und '.$offline_time_sekunden.' Sek.';
  }
  elseif($offline_time_real>=60)
  {
  $offline_string = $offline_time_minuten.' Min. und '.$offline_time_sekunden.' Sek.';
  }
  else
  {
  $offline_string = $offline_time_sekunden.' Sek.';
  }
  echo '
<form action="send-mail-offline.php" method="post">
<input type="text" name="cf_name"" value="'.$offline_string.'" />
<input type="submit" />
</form>
';
  }
  }
  else echo 'ERROR: Datei '.$filename.' existiert nicht!';
?>
<SCRIPT LANGUAGE="JavaScript">document.forms[0].submit();</SCRIPT>
</body>
</html>


send-mail-offline.php
HTML:
<html>
<head>
<title>-</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-9951-1">
</head>
<body>
<?php
$field_massage = $_POST['cf_name'];

$mail_to = 'kontakt@wetter-erzenholz.ch';
$subject = 'OFFLINE Wetter-Erzenholz';
$body_message = 'Wetterstation Erzenholz ist Seit '.$field_massage."\n";

$mail_status = mail($mail_to, $subject, $body_message);

if ($mail_status)
{
echo 'Wetterstation Offline - Wahrnung per E-Mail an '.$mail_to.' gesendet.';
}
else
{
echo 'Wetterstation Offline - Fehler - Keine Wahrnung per E-Mail Verschickt!';
}
?>
</body>
</html>

Hoffentlich kanns mal Einer gebrauchen
 

Neue Beiträge

Zurück