<?php

  // Letzte Änderung: 12.12.2009 

  // Administrator-Einstellungen Anfang Fett markierte, rote Bereiche müssen, blaue können geändert werden

  $UploadPfad='../../MySQL/sicher/bilder/';                             // Dort werden die Bilder abgelegt
  $UploadTempPfad='../../MySQL/sicher/temp/';                           // Temp Zwischenablage der Bilder

  // Über diese URL sind die Bilder später aus der MySQL-Datenbank abrufbar
  $BasisBilderURL='http://www.tommyherrmanndesign.com/nof/MySQL/sicher/bilder/';

  $MaxBildgroesseQuelle=1048576;                                        // Maximale Bildgröße Quelle in Byte - hier 1 MiB
  $MaxXQuelle=640;                                                      // Max X der Quelle, Größe in Pixeln
  $MaxYQuelle=480;                                                      // Max Y der Quelle, Größe in Pixeln

  $MaxXZiel=90;                                                         // Max X des Zieles, Größe in Pixeln
  $MaxYZiel=90;                                                         // Max Y des Zieles, Größe in Pixeln

  // Administrator-Einstellungen Ende




  $_POST['foto']='';                                                    // Leere FotoURL anlegen, Datenbank-Feld heißt foto

  if(isset($_FILES['DateiName']['name']))                               // prüfe ob überhaupt ein Datenfeld übergeben wurde
                                                                        // Vorsicht: Hier wird der Upload auch sogleich
                                                                        // beendet, wenn die durch den Server vorgegebene
                                                                        // Größe von post_max_size überschritten wurde.
  {

    if(!empty($_FILES['DateiName']['name']))                            // prüfen ob die übergebene Datei
                                                                        // vom System angelegt wurde
    {

      $BildName=time().rand(1000,9999).'.jpg';                          // ZielBild bekommt den Namen
                                                                        // Timestamp+4stellige Zufallszahl+.jpg

      $BildmitPfad=$UploadPfad.$BildName;                               // ZielBild_mit_Pfad ist UploadPfad+BildName
                                                                        // z.B. ../sicher/bilder/12345678901234.jpg

      $BildmitTempPfad=$UploadTempPfad.rand(1000,9999).$BildName;       // Das Bild im TempPfad ist jenes was wir hochladen
                                                                        // mit dem Namen so wie beim ZielBild zusätzlich
                                                                        // noch mal um eine 4stellige Zufallszahl erweitert

      if($_FILES['DateiName']['error'] == UPLOAD_ERR_OK)                // Hier prüfen wir ob der Upload OK war, d.h. auch,
                                                                        // daß geprüft wird, ob die vom Server durch
                                                                        // upload_max_filesize vorgegebene Größe
                                                                        // überschritten wurde
      {

        if($_FILES['DateiName']['size'] <= $MaxBildgroesseQuelle)       // Wenn keine Maxima vom Server überschritten wurden
                                                                        // und wird geprüft ob die Dateigröße auch unseren
                                                                        // Anforderungen (1 MiB) entspricht
        {

          if(move_uploaded_file($_FILES['DateiName']['tmp_name'],$BildmitTempPfad))
 
                                                                        // Wenn soweit alles OK ist, wird die Datei,
                                                                        // die durch den Browser/Server meist nacht
                                                                        // /tmp/ kopiert wurde in den TempPfad verschoben.
          {

            if(getimagesize($BildmitTempPfad) == TRUE)                  // Hier wird geprüft, ob Datei ein gültiges Bild ist.
                                                                        // Die Funktion prüft aber nur den Header der Datei.
                                                                        // Es könnte im Bild versteckt noch schädlicher Code
                                                                        // enthalten sein.
            {

              $UploadBildInfo=getimagesize($BildmitTempPfad);           // Hier hole ich weitere Infos zum hochgeladenen Bild


              // 2 Zeilen später prüfe ich dann auf Typ gleich JPEG und ob MaxX und MaxY der Quelle nicht zu groß sind.

              if(($UploadBildInfo[2] == 2) && ($UploadBildInfo[0] <= $MaxXQuelle) && ($UploadBildInfo[1] <= $MaxYQuelle))
              {

                $UploadBild=imagecreatefromjpeg($BildmitTempPfad);      // Erzeuge JPEG Bild im Hauptspeicher von UploadDatei

                $NeuesBild=imagecreatetruecolor($MaxXZiel, $MaxYZiel);  // Erzeuge neues JPEG Bild im Hauptspeicher
                                                                        // mit Max X/Y Ziel


                // 2 Zeilen später kopiere und strecke/dehne ich das OriginalBild in das ZielBild

                imagecopyresampled($NeuesBild, $UploadBild, 0, 0, 0, 0, $MaxXZiel, $MaxYZiel, $UploadBildInfo[0], $UploadBildInfo[1]);

                imagejpeg($NeuesBild, $BildmitPfad);                    // Das neue Bild wird im ZielPfad gespeichert

                imagedestroy($UploadBild);                              // Hauptspeicher freigeben, Originalbild
                imagedestroy($NeuesBild);                               // Hauptspeicher freigeben, Zielbild

                $_POST['foto']=$BasisBilderURL.$BildName;               // Hier wird dann die Variable mit der URL für NOF gesetzt
              }
            }
            unlink($BildmitTempPfad);                                   // Hier wird das hochgeladene temporäre Bild gelöscht
          }
        }
      }
    }
  }

  // Anfang Text-Variablen der e-Mail an den Administrator
  // Letzte Änderung am 12.12.2009

  $sendEmpf  = "Adresse@DeineDomain.de";
  $sendAbse  = "From: Absender@DeineDoamin.de";

  $sendThem  = "Datensatz meiner Datenbank wurde bearbeitet";
  $sendUser  = "An den Administrator,\r\n\r\n";
  $sendUser .= "Ein Datensatz wurde in der Datenbank geändert\r\n\r\n\r\n";

  // Foto wurde entweder nicht angegeben, bzw. der Upload hat nicht funktioniert oder das Bild entsprach nicht unseren Vorgaben
  // z.B. auch: wir möchten nichts am Foto ändern
  if (($_POST['foto'] == "") && ($_POST['behalten'] == "on")) $sendUser .= "Altes Foto bleibt erhalten.\r\n\r\n";

  // Foto wurde entweder nicht angegeben, bzw. der Upload hat nicht funktioniert oder das Bild entsprach nicht unseren Vorgaben
  // und wir wollten es nicht behalten.
  // z.B. auch: wir möchten das Foto nur einfach löschen
  if (($_POST['foto'] == "") && ($_POST['behalten'] != "on")) $sendUser .= "Altes Foto wird nicht mehr angezeigt\r\n\r\n";

  // Foto wurde angegeben und ordnungsgemäß hochgeladen aber wir wollen doch das alte Foto behalten (macht so keinen Sinn)
  if (($_POST['foto'] != "") && ($_POST['behalten'] == "on")) $sendUser .= "Neues Foto ($BasisBilderURL$BildName) wurde zwar hochgeladen, wird aber nicht angezeigt.\r\n\r\n";

  // Foto wurde angegeben, ordnungsgemäß hochgeladen und wird dann auch angezeigt
  if (($_POST['foto'] != "") && ($_POST['behalten'] != "on")) $sendUser .= "Neues Foto ($BasisBilderURL$BildName) wurde hochgeladen und wird angezeigt.\r\n\r\n";

  $sendUser .= "Datensatz war ID: " . $_POST['ID'] . "   Name: " . $_POST['Vorname'] . " " . $_POST['Name'] . "\r\n";

  $sendSign  = "\r\n\r\nGruss Admin";
  // Ende Text-Variablen der e-Mail

  // Mail versenden mit den oben erzeugten Variablen
  @mail( $sendEmpf, $sendThem, $sendUser . $sendSign, $sendAbse );
?>