Übersicht » Einführung CSV
Das auf dieser Seite vorgestellte Upload-Script besitzt gegenüber dem ersten kleinen und noch recht einfachen Upload-Script eine Reihe von nützlichen Erweiterungen. Zu diesen Erweiterungen gehört die automatische Generierung von Vorschaubildern, sogenannten Thumbnails.
Die Passwortabfrage entspricht nicht mehr einem neueren Stand, da selbiges nur noch verschlüsselt gespeichert werden sollte.
Erweitertes Upload-Script (upload.php):
<?php ini_set("session.use_trans_sid", "0"); session_start(); // Session starten error_reporting(E_ALL); // Sollte nach der Erprobung auf 0 gesetzt werden. $file = "galerie.csv"; // Name (und Pfad) der CSV $usernm = "admin"; // Sollte geändert werden $passwd = "admin"; // hier ein sicheres Passwort wählen $sessin = "Rosen"; // Sollte geändert werden $sessiw = "Dornen"; // Sollte geändert werden $klasse = "thumbs-klasse.php"; // Name (und Pfad) des Scripts mit der Klasse if (file_exists($klasse)) require_once($klasse); // die Klasse einbinden /*-- Bekanntmachung von Variablen --------------------------------------------*/ $bildupl = false; $nochnet = true; $fehlerf = true; $fehlerm = true; $fehlerg = true; /*-- Formatierung von Datum und Zeit -----------------------------------------*/ date_default_timezone_set("Europe/Berlin"); $amundum = date("Y-m-d H:i:s"); /*-- Filter für die vom Formular übermittelten Daten und deren Auswertung ----*/ function Filter($filter) { $filter = preg_replace("/[^a-z0-9\s._-]/i", "", $filter); return $filter; } if (isset($_POST["vermerk"]) and !empty($_POST["vermerk"])) { $vermerk = Filter(trim($_POST["vermerk"])); } else {$vermerk = false;} if (isset($_POST["bemerke"]) and !empty($_POST["bemerke"])) { $bemerke = Filter(trim($_POST["bemerke"])); } else {$bemerke = false;} /*-- Prüfung der eingehenden Daten auf Vollständigkeit -----------------------*/ if (isset($_POST["upload"]) and $_FILES["images"]["error"] == 0) { if ($vermerk !== false and $bemerke !== false) { $imagef = $_FILES["images"]; $imsize = $imagef["size"]; $uplimg = getimagesize($imagef["tmp_name"]); $lfdnr = count(scandir("images/")) -1; /*--------------------------------------------------------------------- Überprüfung des Formats der übermittelten File und Überprüfung auf unerlaubte Zeichen sowie auf Überschreitung der Größe der Datei in Bytes. 102400 Byte entsprechen 100 kB. ---------------------------------------------------------------------- */ if ($uplimg["mime"] == "image/jpeg" or $uplimg["mime"] == "image/png") { $imagen = trim($imagef["name"]); $eingan = array("Ä","ä","Ö","ö","Ü","ü","ß"," "); $ausgan = array("ae","ae","oe","oe","ue","ue","ss","-"); $imagen = strtolower(str_replace($eingan, $ausgan, $imagen)); $pruefe = preg_replace("/[a-z0-9_-]+?\.(jpg|png)/i", "", $imagen); if (strlen($pruefe) === 0 and $imsize < 102400) { $imagen = preg_replace("/\./", "-0".$lfdnr.".", $imagen); move_uploaded_file($imagef["tmp_name"], "images/".$imagen); /*------------------------------------------------------------- Erzeugen und Instanziieren eines Objektes KleineBilder für die Generierung von Vorschaubildern, Zuweisung der Höhe und Breite des hochgeladenen Bildes, Pfade von Bildern und Thumbnails. -------------------------------------------------------------- */ $generiere = new KleineBilder(); $generiere->oldw = $uplimg[0]; $generiere->oldh = $uplimg[1]; $generiere->mime = $uplimg["mime"]; $generiere->bilder = "images/".$imagen; $generiere->thumbs = "thumbs/".$imagen; $generiere->generiereThumbs(); /*-- Daten für CSV aufbereiten -------------------------------*/ $daten = "\"".$lfdnr. "\";". "\"".$vermerk. "\";". "\"".$amundum. "\";". "\"".$generiere->bilder."\";". "\"".$generiere->oldw. "\";". "\"".$generiere->oldh. "\";". "\"".$generiere->thumbs."\";". "\"".$generiere->neuw. "\";". "\"".$generiere->neuh. "\";". "\"".$bemerke."\"\n"; /*-- Daten in CSV schreiben ----------------------------------*/ file_put_contents($file, $daten, FILE_APPEND|LOCK_EX); /*-- Formular leere Werte zuweisen ---------------------------*/ $vermerk = ""; $bemerke = ""; $bildupl = true; /*-- Für die Ausgabe von eigenen Fehlermitteilungen --------------*/ } else {$fehlerg = false;} } else {$fehlerm = false;} } else {$fehlerf = false;} } else {$nochnet = false;} ?> <!DOCTYPE html> <html> <head> <title>Formular für den Upload von Bildern</title> <link rel="stylesheet" type="text/css" href="galerie.css"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="robots" content="noindex,nofollow"> </head> <body style="text-align:center"> <h1>Formular für den Upload von Bildern</h1> <p class="ctext">Ein kleines Script mit einem Formular</p> <div class="forml"> <?php /*----------------------------------------------------------------------------- Setzen von Sessionvariablen und Zuweisung Werten, falls Username und Passwort korrekt übermittelt wurden. Einblendung des eigentlichen Formulars. ------------------------------------------------------------------------------ */ if (isset($_POST["galerie"]) and $_POST["username"] == $usernm and $_POST["password"] == $passwd) { $_SESSION["sessiname"] = $sessin; $_SESSION["sessiword"] = $sessiw; } if (isset($_SESSION["sessiname"]) and $_SESSION["sessiname"] == $sessin and $_SESSION["sessiword"] == $sessiw) { echo "\t<form action=\"upload.php\" method=\"post\" enctype=\"multipart/form-data\" accept-charset=\"utf-8\">\n". "\t<p class=\"fontg magti ctext\">Vermerke eintragen und Image auswählen:</p>\n". "\t<p class=\"wi289 ctext fontg paddl padmb\">Quelle und/oder Urheber:<br>\n". "\t<input type=\"text\" name=\"vermerk\" value=\"".$vermerk."\" size=\"30\"></p>\n". "\t<p class=\"wi289 ctext fontg paddl padmb\">Bildtitel:<br>\n". "\t<input type=\"text\" name=\"bemerke\" value=\"".$bemerke."\" size=\"30\"></p>\n". "\t<p class=\"wi292 ctext fontg padmb\">Image auswählen:<br>\n". "\t<input type=\"file\" name=\"images\" accept=\"image/*\"></p>\n". "\t<p class=\"wi292 ctext padmb\"><input type=\"reset\" value=\" Reset \">\n". "\t<input type=\"submit\" name=\"upload\" value=\"Hochladen\"></p>\n". "\t</form>\n"; } else { /*-- Formular für Einwahl wird nur bis zu < x-mal angezeigt --------------*/ if (isset($_SESSION["szaehler"]) and $_SESSION["szaehler"] < 10){ echo "\t<form action=\"".basename($_SERVER["PHP_SELF"])."\" method=\"post\" accept-charset=\"utf-8\">\n". "\t<p class=\"ctext\"><input type=\"text\" name=\"username\" size=\"28\"></p>\n". "\t<p class=\"ctext\"><input type=\"password\" name=\"password\" size=\"28\"></p>\n". "\t<p class=\"ctext\"><input type=\"submit\" name=\"galerie\" value=\"Senden\"></p>\n". "\t</form>\n"; } /*-- Ausgabe einer Mitteilung bei mehr als x-Fehlversuchen ---------------*/ elseif (isset($_SESSION["szaehler"]) and $_SESSION["szaehler"] >= 10) { echo "<p class=\"ctext\">Das war bereits der ".$_SESSION["szaehler"].". erfolglose Versuch!<br>\n". "Beehren Sie uns zu einem späteren <br>\nZeitpunkt erneut mit einem Besuch.</p>\n"; } /*-- Formular für Einwahl beim ersten Besuch der Seite aufrufen ----------*/ else { echo "<p class=\"ctext\"><a href=\"".basename($_SERVER["PHP_SELF"])."\">Formular aufrufen</a></p>\n"; $_SESSION["szaehler"] = 0; } } $_SESSION["szaehler"]++; ?> </div> <div class="seite"> <?php if ($bildupl === true) echo "Das hat wohl geklappt.<br>\n"; if ($nochnet === false) echo "Es wurde noch nichts eingegen oder ausgewählt.<br>\n"; if ($fehlerf === false) echo "Es wurde keine Quelle und/oder kein Titel für das Bild angegeben.<br>\n"; if ($fehlerm === false) echo "Es scheint sich um kein JPG oder PNG zu handeln.<br>\n"; if ($fehlerg === false) echo "Es handelt sich um kein JPG oder PNG oder das Bild ist zu groß.<br>\n"; ?> </div> </body> </html>