31
hallo,
nach über einem monat komm ich wieder mal dazu weiter zu testen.
ich habe nun versucht einen möglichen ordner zu erstellen, was mit allerdings 2 fehlermeldungen ausgibt.
Notice: Undefined index: ordner on line 77
Warning: mkdir() [function.mkdir]: Permission denied on line 80
mit einem anderen script klappt das mit dem ordner erstellen und sogar auswählen eines vorhanden ordners (leider mit grafikwasserzeichen und nur einem bild)
nach über einem monat komm ich wieder mal dazu weiter zu testen.
ich habe nun versucht einen möglichen ordner zu erstellen, was mit allerdings 2 fehlermeldungen ausgibt.
Notice: Undefined index: ordner on line 77
Warning: mkdir() [function.mkdir]: Permission denied on line 80
<?php
error_reporting(E_ALL);
// Funktionen definieren
// -----------------------------------------------
function checkUpload($myFILE, $file_extensions, $mime_types, $maxsize)
{
$errors = array();
// Uploadfehler prüfen
switch ($myFILE['error']){
case 1: $errors[] = "Bitte wählen Sie eine Datei aus, die <b>kleiner als ".ini_get('upload_max_filesize')."</b> ist.";
break;
case 2: $errors[] = "Bitte wählen Sie eine Datei aus, die <b>kleiner als ".$maxsize/(4096*4096)." MB</b> ist.";
break;
case 3: $errors[] = "Die Datei wurde nur teilweise hochgeladen.";
break;
case 4: $errors[] = "Es wurde keine Datei ausgewählt.";
return $errors;
break;
default : break;
}
// MIME-Type prüfen
if(count($mime_types)!=0 AND !in_array(strtolower($myFILE['type']), $mime_types)){
$fehler = "Falscher MIME-Type (".$myFILE['type'].").<br />".
"Erlaubte Typen sind:<br />\n";
foreach($mime_types as $type)
$fehler .= " - ".$type."\n<br />";
$errors[] = $fehler;
}
// Dateiendung prüfen
if($myFILE['name']=='' OR (count($file_extensions)!=0 AND !in_array(strtolower(getExtension($myFILE['name'])), $file_extensions))){
$fehler = "Falsche Dateiendung (".getExtension($myFILE['name']).").<br />".
"Erlaubte Endungen sind:<br />\n";
foreach($file_extensions as $extension)
$fehler .= " - ".$extension."\n<br />";
$errors[] = $fehler;
}
// Dateigröße prüfen
if($myFILE['size'] > $maxsize){
$errors[] = "Datei zu groß (".sprintf('%.2f',$myFILE['size']/(4096*4096))." MB).<br />".
"Erlaubte Größe: ".$maxsize/(4096*4096)." MB\n";
}
return $errors;
}
// gibt die Dateiendung einer Datei zurück
function getExtension ($filename)
{
if(strrpos($filename, '.'))
return substr($filename, strrpos($filename, '.')+1);
return false;
}
// erzeugt einen Zufallswert
function getRandomValue()
{
return substr(md5(rand(1, 9999)),0,8).substr(time(),-6);
}
// erzeugt einen neuen Dateinamen aus Zufallswert und
// Dateiendung
function renameFile ($filename)
{
return getRandomValue().".".getExtension($filename);
}
// Werte zur Dateiprüfung initialisieren
// -----------------------------------------------
$maxsize = 2*4096*4096;
$file_extensions = array('jpg', 'jpeg');
$mime_types = array('image/pjpeg', 'image/jpeg');
// Upload-Ordner definieren
// -----------------------------------------------
// $ordner = "bilder/";
$ordner = $_POST['ordner'];
$directory = "/bilder/$ordner";
if( mkdir ("$directory", 0777))
{
echo "Verzeichnis erstellt!";
}
// mkdir("bilder/".$_POST['ordner'],0777)
$font_path = "font/VERDANA.TTF";
// Anzahl der Datefelder
$anzahl_dateifelder = 5;
// Beginn des Skriptes
// -----------------------------------------------
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \n".
"\"http://www.w3.org/TR/html4/strict.dtd\">\n";
echo "<html>\n";
echo "<head>\n";
echo " <title>multipler Datei-Upload</title>\n";
echo "</head>\n";
echo "<body>\n";
// Falls der Benutzer auf "Upload" gedrückt hat,
// werden die Dateien überprüft
if(isset($_POST['submit']) AND $_POST['submit']=='Upload'){
// jede Datei einzeln testen
for($i=0; $i<$anzahl_dateifelder; $i++){
$myFILE['name'] = $_FILES['Datei']['name'][$i];
$myFILE['type'] = $_FILES['Datei']['type'][$i];
$myFILE['tmp_name'] = $_FILES['Datei']['tmp_name'][$i];
$myFILE['error'] = $_FILES['Datei']['error'][$i];
$myFILE['size'] = $_FILES['Datei']['size'][$i];
// Fehlerarray erzeugen
$errors = array();
$errors = checkUpload($myFILE, $file_extensions, $mime_types, $maxsize);
if(count($errors)){
echo "<p>\n".
"Die ".($i+1).". Datei (".$myFILE['name'].") konnte nicht gespeichert werden.<br />\n";
foreach($errors as $error)
echo $error."<br />\n";
echo "</p>\n";
}
else {
do {
$neuer_name = renameFile($myFILE['name']);
} while(file_exists($ordner.$neuer_name));
if(@move_uploaded_file($myFILE['tmp_name'], $ordner.$neuer_name)){
echo "<p>\n".
"Die ".($i+1).". Datei (".$myFILE['name'].") wurde erfolgreich gespeichert.<br />\n".
"</p>\n";
//Bilder in Variablen Laden
$Grafik = ImageCreateFromJPEG($ordner.$neuer_name);
//Wasserzeichen erstellen
$im = imagecreate (165, 10);
//Hintergrundfarbe - Grau = 207,207,207
$black = ImageColorAllocate ($im, 255, 255, 255);
//Schriftfarbe - Schwarz = 0,0,0
$white = ImageColorAllocate ($im, 0, 0, 0);
//ImageTTFText ($im, 20, 0, 10, 20, $white, "VERDANA.TTF",
ImageTTFText ($im, 8, 0, 1, 9, $white, $font_path,
"copyright DeinName - 2010");
//Bearbeitung
ImageCopy($Grafik, $im,
imagesx($Grafik)-imagesx($im),
imagesy($Grafik)-imagesy($im), 0, 0,
imagesx($im),
imagesy($im));
//Bilder ausgabe
//imagejpeg($Grafik);
//Bild Speichern
imagejpeg($Grafik, "bilder/$neuer_name");
}
else{
echo "<p>\n".
"Die Die ".($i+1).". Datei (".$myFILE['name'].") konnte nicht gespeichert werden.<br />\n".
"Es ist ein Upload-Fehler aufgetreten.<br />\n".
"Bitte versuchen Sie es später erneut.<br />\n".
"<br />\n".
"Sollte der Upload noch immer nicht funktionieren, informieren Sie uns bitte per Email.<br />\n".
"<a href=\"".$_SERVER['PHP_SELF']."\">Zurück zum Upload-Formular</a>\n".
"</p>\n";
}
}
}
echo "<p>\n".
"<a href=\"".$_SERVER['PHP_SELF']."\">Zurück zum Upload-Formular</a>\n".
"</p>\n";
}
// Beim ersten Aufruf des Skriptes wird das
// Upload-Formular angezeigt
else{
echo "<h1>Laden Sie mehrere Bilder hoch!</h1>\n";
echo "<h2>Erlaubte Dateiendungen sind:</h2>\n";
foreach($file_extensions as $extension)
echo " ".$extension.", \n";
echo "<h2>Erlaubte Dateigröße:</h2>\n";
echo " - maximal ".($maxsize/(4096*4096))." MB\n<br />";
echo " <form ".
"action=\"".$_SERVER['PHP_SELF']."\" ".
"method=\"post\" ".
"enctype=\"multipart/form-data\">\n";
// Unterordner für Bilder
echo "<label>Ordner: <input type=\"text\" name=\"ordner\" value=\"".$ordner."\" /></label>";
echo " <br />\n";
//Felder für Bilder
echo " <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"".$maxsize."\" />\n";
for($i=0; $i<$anzahl_dateifelder; $i++){
echo " <label for=\"Datei\">".($i+1).". Datei auswählen</label>\n";
echo " <input type=\"file\" name=\"Datei[".$i."]\" id=\"Datei[".$i."]\" />\n";
echo " <br />\n";
}
echo " <input type=\"submit\" name=\"submit\" value=\"Upload\" />\n";
echo " </form>\n";
}
echo "</body>\n";
echo "</html>\n";
?>
mit einem anderen script klappt das mit dem ordner erstellen und sogar auswählen eines vorhanden ordners (leider mit grafikwasserzeichen und nur einem bild)
<?php
error_reporting(E_ALL);
session_start();
$maxkb = 7194304; // Maximale Dateigröße (enthält alle Daten einzuschränken)
$watermerkurl = "hover.png"; // Wasserzeichen Bild muss ein png
?>
<html>
<head>
<script language="javascript">
function createmap(id)
{
if(document.getElementById("weergeefcreate"+id).style.display=='none')
{
document.getElementById("weergeefcreate"+id).style.display = '';
document.getElementById("verbergcreate"+id).style.display = 'none';
document.getElementById("createetext"+id).style.display = 'none';
}
else
{
document.getElementById("weergeefcreate"+id).style.display = 'none';
document.getElementById("verbergcreate"+id).style.display = '';
document.getElementById("createetext"+id).style.display = '';
}
}
</script>
</head>
<body>
<h3 align="center">Uploaden</h3>
<?php
if(isset($_POST['map']))
{
if($_POST['map'] == 'this')
{
$path = './';
}
else
{
$path = $_POST['map'].'/'; // Ordner hochgeladen dann muß mit Schrägstrich Ende
}
}
else
{
$path = './';
}
if(isset($_POST['resize_breedte']))
{
$user_breedte = $_POST['resize_breedte']; // Breite des neuen Bildes
}
//--- prüfen, ob die Datei kleiner oder so groß wie die angegebene Größe und ob das Foto hochgeladen wurde und die Ausweitung von IT. jpg oder. jpeg!
if(isset($_POST['submit']) && $_FILES['userfile']['size'] <= $maxkb &&
!file_exists($path . $_FILES['userfile']['name']) &&
$_FILES['userfile']['size'] &&
is_uploaded_file($_FILES['userfile']['tmp_name']) &&
(strtolower(substr($_FILES['userfile']['name'], -3)) == "jpg" || strtolower(substr($_FILES['userfile']['name'], -4)) == "jpeg"))
{
//--- Bild hochladen $path
move_uploaded_file($_FILES['userfile']['tmp_name'], $path . $_FILES['userfile']['name']);
//--- transparentes Wasserzeichen
$watermerk = imagecreatefrompng($watermerkurl);
$watermerk_width = imagesx($watermerk);
$watermerk_height = imagesy($watermerk);
imagecreatetruecolor($watermerk_width, $watermerk_height);
//--- Identifizieren Sie die Eigenschaften des Bildes
list($breedte, $hoogte, $image_type) = getimagesize($path . $_FILES['userfile']['name']);
//--- das Verhältnis zwischen Höhe und Breite
$image_ratio = $hoogte / $breedte;
//--- auf der Grundlage der raio die neue Höhe
if($image_ratio > 1){
$rs_breedte = $user_breedte;
$rs_hoogte = $user_breedte * $image_ratio;
}
else{
$rs_hoogte = $user_breedte;
$rs_breedte = $user_breedte / $image_ratio;
}
//--- lernen, Bild im Speicher die Größe
$resize = imagecreatetruecolor($rs_breedte, $rs_hoogte);
//--- Quelle ändern in
$source = imagecreatefromjpeg($path . $_FILES['userfile']['name']);
//--- Photo Resize
imagecopyresized($resize, $source, 0, 0, 0, 0, $rs_breedte, $rs_hoogte, $breedte, $hoogte);
// Foto Lagerung
imagejpeg($resize, $path . $_FILES['userfile']['name']);
$image = imagecreatefromjpeg($path . $_FILES['userfile']['name']);
$size = getimagesize($path . $_FILES['userfile']['name']);
if(!isset($_POST['watermerk']) || $_POST['watermerk'] != 'nee')
{
//--- definieren Sie die Koordinaten des Wasserzeichens - diesem Beispiel ist links
/*
bijv: geuploade plaatje: 180 x 130
watermerk groote: 50 x 16
berekening voor coordinaten 'x' as:
180 (breedte geuploade foto) - 50 (breedte watermerk) - 5 (ruimte rechts) = 125 pixels vanaf links
berekening voor 'y' as:
130 (hoogte geuploade foto) - 16 (hoogte watermerk) - 5 (ruimte onder) = 109 pixels vanaf boven
*/
//--- dit is voor rechts boven
$xas = $size[0] - $watermerk_width - 5;
$yas = 5;
//--- overschrijf het 'geuploade bestand' en voeg watermerk toe
imagecopymerge($image, $watermerk, $xas, $yas, 0, 0, $watermerk_width, $watermerk_height, 100);
//--- upload image
imagejpeg($image, $path . $_FILES['userfile']['name']); // max. kwaliteit
imagedestroy($image);
imagedestroy($watermerk);
}
$_SESSION['image'] = $path.$_FILES['userfile']['name'];
echo '<meta http-equiv="refresh" content="2;url=?uploaded=ja">';
echo 'Erfolgreich hochgeladen wurde, und warten a.u.b.';
}
elseif(isset($_GET['uploaded']) && isset($_SESSION['image']))
{
echo 'Das Bild wird hochgeladen. Sie können die Bilder anzeigen, indem Sie auf den folgenden Link:<br />';
echo '<a href="' . $_SESSION['image'] . '">' . $_SESSION['image'] . '</a><p>';
echo '<img src="' . $_SESSION['image'] . '"><p>';
echo '<a href="' . $_SERVER['PHP_SELF'] . '">ein Foto hochladen</a>';
}
else
{
//--- errors
if (isset($_POST['submit']))
{
if (file_exists($path . $_FILES['userfile']['name']) && $_FILES['userfile']['name'])
{
echo '<b>Error! Die Datei existiert bereits, benennen Sie das Bild und es erneut versuchen.</b><br><br>';
}
elseif ($_FILES['userfile']['size'] > $maxkb)
{
echo '<b>Error! Die Datei ist größer als " . $maxkb . "bytes. Reduzieren Sie das Bild und versuchen Sie es erneut</b><br><br>';
}
elseif (strtolower(substr($_FILES['userfile']['name'], -3)) != "jpg" && strtolower(substr($_FILES['userfile']['name'], -4)) != "jpeg")
{
echo '<b>Error! Das Foto hat einen falschen Dateinamen. Nur hochgeladenen Dateien mit A. JPG oder. Jpeg als a.</b><br><br>';
}
else
{
echo '<b>Error! Das Bild ist nicht hochgeladen oder es gibt kein Bild hochgeladen. Bitte versuchen Sie es erneut.</b><br><br>';
}
}
else
{
if(isset($_POST['creatdir'])){
if(!empty($_POST['mapname']))
{
mkdir("./".$_POST['mapname'], 0755);
echo 'Ordner '.$_POST['mapname'].' wird erstellt<br><br>';
}
else
{
echo '<b>Die angegebene Datei ist leer</b><br><br>';
}
}
else{
echo '<div id="createetext1" style="display:none; position:absolute; width: 350px; background-color:#999999; z-index: 3;">
<h4 align="center">Erstellen eines neuen Ordners</h4>
<form method="post" action="' . $_SERVER['PHP_SELF'] . '">
Neuer Ordner Name:<input type="text" name="mapname" /><br /><br>
<input type="submit" name="creatdir" value="Ordner erstellen" />
<div id="verbergcreate1" style="display:none;">
<input name="createe_text" type="button" value="cancel" onclick="createmap(1)" />
</div></div>
</form>
</div>';
}
if(isset($_POST['userfile']))
{
$file = $_POST['userfile'];
}
else
{
$file = " ";
}
echo '<form method="post" action="' . $_SERVER['PHP_SELF'] . '" enctype="multipart/form-data">';
$handle = opendir($path);
echo 'Wählen Sie einen Ordner: <select name="map" style="z-index: 1;">';
echo '<option value="this">Ordner wählen</option>';
while (false!==($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
if (is_dir($file))
{
echo '<option value="'.$file.'">'.$file.'</option>';
}
}
}
echo '</select>
<div id="weergeefcreate1" onclick="createmap(1)" style="cursor:pointer; float: left;">
<i>Oder klicken Sie hier, und erstellen Sie einen neuen Ordner</i>
</div>
<br>
<br>
<br>';
closedir($handle);
//--- formulier met enctype multipart/form-data ivm de file upload
echo '<input type="hidden" name="MAX_FILE_SIZE" value="' . $maxkb . '" />
Neue Breite: <input name="resize_breedte" type="text" value="500" size="4" maxlength="4">px<br /><br>
Datei: <input type="file" name="userfile" value="' . $file . '" /><br /><br>
<input type="checkbox" name="watermerk" value="nee" />Kein Wasserzeichen<br /><br />
<input type="submit" name="submit" value="uploaden" onclick="';
echo "document.getElementById('bezig').style.visibility='visible'";
echo '" />
</form><br><br><div id="bezig" style="visibility: hidden;">Hochladen<img src="uploading.gif"></div>';
}
}
?>
</body>
</html>