<?php
// Letzte Änderung: 09.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
// Ab hier bitte nichts mehr ändern
$_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 } } } } }
?>
|