kostenloser Webspace werbefrei: lima-city


Bilder-Upload-Script (PHP)

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    ranulf-streuff

    ranulf-streuff hat kostenlosen Webspace.

    Hi,
    ich habe ein Problem mit meinem Bilder-Upload-Script. Wenn man versucht es aufzurufen, gibt der Browser Error-500 aus.
    Hier das Problem:
    Nachdem man sich als Admin eingeloggt hat erscheint admin.php (entscheidender Teil):
    <h1>Admin</h1>
    <?php
    require_once ('config.php');
    if (($_POST['User'] == $LoginBenutzer) && ($_POST['Password'] == $LoginKennwort))   {
    echo "<form name=\"DateiUpload\" method=\"post\" action=\"functions/upload.php\" enctype=\"multipart/form-data\">
    <b>Titel:</b> <input type=\"text\" name=\"Title\" value=\"\"/><br />
    <b>Jahr:</b> <input type=\"text\" name=\"Year\" value=\"\"/><br />
    <b>Beschreibung:</b> <input type=\"text\" name=\"Description\" value=\"\"/><br />
    <b>Bereich:</b> 
    <select name=\"Area\" size=\"\">
    <option value=\"Sculptures\" selected=\"selected\">Skulpturen</option>
    <option value=\"Paintings\">Gem&auml;lde</option>
    </select>
    
    <b>Datei (nur Bilddateien):</b> <input type=\"file\" name=\"UserFile\" value=\"\"/><br /><br />
    
    <input type=\"submit\" name=\"SubmitButton\" value=\"Absenden\"/>
    <input type=\"reset\" name=\"ResetButton\" value=\"Zur&uuml;cksetzen\"/>
    </form>
    ";
    }
    else   {
    	echo "Falscher Benutzer und/oder falsches Kennwort.<br />
    	<a href=\"login.php\">Zur&uuml;ck zum Login</a>";
    }
    ?>


    Wenn man das Upload-Formular nun abgeschickt hat, wird die Funktion functions/upload.php aufgerufen:
    <head>
    
    <title>Dateiupload</title>
    <link rel="shortcut icon" href="pictures/favicon.png" />
    
    </head>
    
    <body>
    
    <?php
    /********** Formular überprüfen **********/
    $Area = $_POST['Area'];
    $Title = $_POST['Title'];
    $Year = $_POST['Year'];
    $Description = $_POST['Description'];
    $info = getimagesize($_FILES['UserFile']['tmp_name']);
    $tmp_width = $info[0];
    $tmp_height = $info[1];
    $type = $info[2];
    if ((!isset($_POST['Area'])) || (!isset($_POST['Title'])) || (!isset($_POST['Year'])) || (!isset($_POST['Description'])) || (!isset($_FILES['UserFile']['tmp_name'])))   {
    	die("Bitte das Formular ganz ausfüllen.");
    }
    if($type == 0)   {
    	die ("Bitte nur Dateien mit den Endungen .jpg, .jpeg, .png und .gif hochladen.")
    }
    
    /********** Bild hochladen **********/
    move_uploaded_file ($_FILES['UserFile']['tmp_name'], "../uploaded/pictures/".$_FILES['UserFile']['name']);
    echo "Die Datei wurde Erfolgreich nach uploaded/pictures/".$_FILES['UserFile']['name']." hochgeladen.";
    
    /********** Bild verkleinern **********/
    $UsedFile = "uploaded/pictures/".$_FILES['UserFile']['name'];
    
    if ($type == 1)   {
    	$File1 = imagecreatefromgif ($UsedFile);
    }
    elseif ($type == 2)   {
    	$File1 = imagecreatefromjpeg ($UsedFile);
    }
    elseif ($type == 3)   {
    	$File1 = imagecreatefrompng ($UsedFile);
    }
    
    if ($tmp_width >= $tmp_height)   {
    	$factor = $tmp_width / 400;
    	$width = $tmp_width / $factor;
    	$height = $tmp_height / $factor;		
    }
    elseif ($tmp_height > $tmp_width)   {
    	$factor = $tmp_height / 400;
    	$width = $tmp_width / $factor;
    	$height = $tmp_height / $factor;
    }
    else   {
    	die ("Es ist ein Fehler beim skalieren aufgetreten.");
    }
    $File2 = imagecreatetruecolor(width, height);
    imagecopyresambled($File2, $File1, 0, 0, 0, 0, $width, $height, $tmp_width, $tmp_height);
    
    if (type == 1)   {
    	imagegif ($File2, $UsedFile);
    }
    elseif (type == 2)   {
    	imagejpeg ($File2, $UsedFile);
    }
    elseif (type == 3)   {
    	imagepng ($File2, $UsedFile);
    }
    
    imagedestroy($File1);
    imagedestroy($File2);
    
    echo "Die Datei wurde erfolgreich skaliert.";
    
    /********** Thumbnail erstellen **********/
    $FromImage = "uploaded/pictures/".$_FILES['UserFile']['name'];
    
    $info = getimagesize($FromImage);
    $tmp_width = $info[0];
    $tmp_height = $info[1];
    $type = $info[2];
    
    if ($type == 1)   {
    	$Image = imagecreatefromgif ($FromImage);
    }
    elseif ($type == 2)   {
    	$Image = imagecreatefromjpeg ($FromImage);
    }
    elseif ($type == 3)   {
    	$Image = imagecreatefrompng ($FromImage);
    }
    
    if ($tmp_width >= $tmp_height)   {
    	$width = $tmp_width / 4;
    	$height = $tmp_height / 4;		
    }
    elseif ($tmp_height > $tmp_width)   {
    	$width = $tmp_width / 4;
    	$height = $tmp_height / 4;
    }
    else   {
    	die ("Es ist ein Fehler beim erstellen des Thumbnails aufgetreten.");
    }
    $Thumbnail = imagecreatetruecolor(width, height);
    imagecopyresambled($Thumbnail, $Image, 0, 0, 0, 0, $width, $height, $tmp_width, $tmp_height);
    
    if ($type == 1)   {
    	imagegif ($Thumbnail, "uploaded/thumbnails/".$_FILES['UserFile']['name']);
    }
    elseif ($type == 2)   {
    	imagejpeg ($Thumbnail, "uploaded/thumbnails/".$_FILES['UserFile']['name']);
    }
    elseif ($type == 3)   {
    	imagepng ($Thumbnail, "uploaded/thumbnails/".$_FILES['UserFile']['name']);
    }
    
    imagedestroy($Image);
    imagedestroy($Thumbnail);
    
    echo "Der Thumbnail wurde erfolgreich erstellt.";
    
    /********** Datenbank connecten **********/
    require_once ('config.php');
    $db_link = mysql_connect ($MySQLHost, $MySQLBenutzer, $MySQLKennwort);
    mysql_select_db($MySQLDatenbank);
    
    /********** Daten in Datenbank speichern **********/
    if ($_POST['Area'] == "Sculptures")   {
    	INSERT INTO Skulpturen
    		(Datei,
    		Titel,
    		Jahr,
    		Beschreibung)
    	VALUES
    		($_FILES['UserFile']['name'],
    		$Title,
    		$Year,
    		$Description);
    }
    elseif ($_POST['Area'] == "Paintings")   {
    	INSERT INTO Gemaelde
    		(Datei,
    		Titel,
    		Jahr,
    		Beschreibung)
    	VALUES
    		($_FILES['UserFile']['name'],
    		$Title,
    		$Year,
    		$Description);
    }
    else   {
    	die("Fehler beim eintragen in die Tabelle.");
    }
    
    /********** Datenbank disconnecten **********/
    mysql_close($db_link);
    ?>
    
    <br />
    <a href="../admin.php">Zur Adminseite</a>
    </body>


    Kann da jemand einen bzw. mehrere Fehler erkennen, und wenn ja, welche?

    Ich hoffe auf eure Hilfe. :biggrin:
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hi ranulf-streuff

    In Upload.php


    1. Strichpunkt fehlte
    if($type == 0)   {
    	die ("Bitte nur Dateien mit den Endungen .jpg, .jpeg, .png und .gif hochladen.");
    }


    2. Dollarzeichen fehlte
    $File2 = imagecreatetruecolor($width, $height);


    3. Falscher Funktionsname, so ist er richtig
    imagecopyresampled($File2, $File1, 0, 0, 0, 0, $width, $height, $tmp_width, $tmp_height);


    4. Das gleiche dann auch beim Thumbnail
    $Thumbnail = imagecreatetruecolor($width, $height);
    imagecopyresampled($Thumbnail, $Image, 0, 0, 0, 0, $width, $height, $tmp_width, $tmp_height);



    5. Das Hochladen in die Datenbank würde ich so schreiben.
    $dateiname = $_FILES['UserFile']['name'];
    if ($_POST['Area'] == "Sculptures")   {
    	$eintrag="INSERT INTO Skulpturen
    		(Datei,
    		Titel,
    		Jahr,
    		Beschreibung)
    		VALUES
    		($dateiname,
    		$Title,
    		$Year,
    		$Description)";
    		$eintragen = mysql_query($eintrag);
    }
    elseif ($_POST['Area'] == "Paintings")   {
    	$eintrag="INSERT INTO Gemaelde
    		(Datei,
    		Titel,
    		Jahr,
    		Beschreibung)
    	VALUES
    		($dateiname,
    		$Title,
    		$Year,
    		$Description);";
    		$eintragen = mysql_query($eintrag);
    }
    else   {
    	die("Fehler beim eintragen in die Tabelle.");
    }



    Mfg javaphp :wink:
  4. Erst einmal würde ich gewisse Dinge nicht mit PHP ausgeben lassen. Das ist unschön und auch nicht nötig...

    <h1>Admin</h1>
    <?php
    require_once ('config.php');
    if (($_POST['User'] == $LoginBenutzer) && ($_POST['Password'] == $LoginKennwort))
    {
    ?>
    <form name="DateiUpload" method="post" action="functions/upload.php" enctype="multipart/form-data">
    <b>Titel:</b> <input type="text" name="Title" value=""/><br />
    <b>Jahr:</b> <input type="text" name="Year" value=""/><br />
    <b>Beschreibung:</b> <input type="text" name="Description" value=""/><br />
    <b>Bereich:</b> 
    <select name="Area" size="">
    <option value="Sculptures" selected="selected">Skulpturen</option>
    <option value="Paintings">Gem&auml;lde</option>
    </select>
    
    <b>Datei (nur Bilddateien):</b> <input type="file" name="UserFile" value=""/><br /><br />
    
    <input type="submit" name="SubmitButton" value="Absenden"/>
    <input type="reset" name="ResetButton" value="Zur&uuml;cksetzen"/>
    </form>
    <?php
    }
    else
    {
    	echo "Falscher Benutzer und/oder falsches Kennwort.<br /><a href=\"login.php\">Zur&uuml;ck zum Login</a>";
    }
    ?>


    Wie mein Vorposter schon erwähnte, hast du ein paar kleinere Fehler im Script... Ich würde es dennoch "leicht" anders machen...

    <head>
    <title>Dateiupload</title>
    <link rel="shortcut icon" href="pictures/favicon.png" />
    </head>
    
    <body>
    
    <?php
    /********** Formular überprüfen **********/
    $Area = $_POST['Area'];
    $Title = $_POST['Title'];
    $Year = $_POST['Year'];
    $Description = $_POST['Description'];
    $info = getimagesize($_FILES['UserFile']['tmp_name']);
    $tmp_width = $info[0];
    $tmp_height = $info[1];
    $type = $info[2];
    if ((!isset($_POST['Area'])) || (!isset($_POST['Title'])) || (!isset($_POST['Year'])) || (!isset($_POST['Description'])) || (!isset($_FILES['UserFile']['tmp_name'])))   {
    	die("Bitte das Formular ganz ausfüllen.");
    }
    if($type == 0)   {
    	die ("Bitte nur Dateien mit den Endungen .jpg, .jpeg, .png und .gif hochladen.");
    }
    
    /********** Bild hochladen **********/
    move_uploaded_file ($_FILES['UserFile']['tmp_name'], "../uploaded/pictures/".$_FILES['UserFile']['name']);
    echo "Die Datei wurde Erfolgreich nach uploaded/pictures/".$_FILES['UserFile']['name']." hochgeladen.";
    
    /********** Bild verkleinern **********/
    $UsedFile = "uploaded/pictures/".$_FILES['UserFile']['name'];
    
    if ($type == 1) { $File1 = imagecreatefromgif ($UsedFile); }
    elseif ($type == 2) { $File1 = imagecreatefromjpeg ($UsedFile); }
    elseif ($type == 3) { $File1 = imagecreatefrompng ($UsedFile); }
    
    if ($tmp_width >= $tmp_height)   {
    	$factor = $tmp_width / 400;
    	$width = $tmp_width / $factor;
    	$height = $tmp_height / $factor;		
    }
    elseif ($tmp_height > $tmp_width)   {
    	$factor = $tmp_height / 400;
    	$width = $tmp_width / $factor;
    	$height = $tmp_height / $factor;
    }
    else { die ("Es ist ein Fehler beim Skalieren aufgetreten. (1)"); }
    
    $File2 = imagecreatetruecolor($width, $height);
    imagecopyresampled($File2, $File1, 0, 0, 0, 0, $width, $height, $tmp_width, $tmp_height);
    
    if (type == 1) { imagegif ($File2, $UsedFile); }
    elseif (type == 2) { imagejpeg ($File2, $UsedFile); }
    elseif (type == 3) { imagepng ($File2, $UsedFile); }
    else { die ("Es ist ein Fehler beim Skalieren aufgetreten. (2)"); }
    
    imagedestroy($File1);
    imagedestroy($File2);
    
    echo "Die Datei wurde erfolgreich skaliert.";
    
    /********** Thumbnail erstellen **********/
    $FromImage = "uploaded/pictures/".$_FILES['UserFile']['name'];
    
    $info = getimagesize($FromImage);
    $tmp_width = $info[0];
    $tmp_height = $info[1];
    $type = $info[2];
    
    if ($type == 1) { $Image = imagecreatefromgif ($FromImage); }
    elseif ($type == 2) { $Image = imagecreatefromjpeg ($FromImage); }
    elseif ($type == 3) { $Image = imagecreatefrompng ($FromImage); }
    
    if ($tmp_width >= $tmp_height)   {
    	$width = $tmp_width / 4;
    	$height = $tmp_height / 4;		
    }
    elseif ($tmp_height > $tmp_width)   {
    	$width = $tmp_width / 4;
    	$height = $tmp_height / 4;
    }
    else { die ("Es ist ein Fehler beim erstellen des Thumbnails aufgetreten. (1)"); }
    
    $Thumbnail = imagecreatetruecolor(width, height);
    imagecopyresampled($Thumbnail, $Image, 0, 0, 0, 0, $width, $height, $tmp_width, $tmp_height);
    
    if ($type == 1) { imagegif ($Thumbnail, "uploaded/thumbnails/".$_FILES['UserFile']['name']); }
    elseif ($type == 2) { imagejpeg ($Thumbnail, "uploaded/thumbnails/".$_FILES['UserFile']['name']); }
    elseif ($type == 3) { imagepng ($Thumbnail, "uploaded/thumbnails/".$_FILES['UserFile']['name']); }
    else { die ("Es ist ein Fehler beim erstellen des Thumbnails aufgetreten. (2)"); }
    
    imagedestroy($Image);
    imagedestroy($Thumbnail);
    
    echo "Der Thumbnail wurde erfolgreich erstellt.";
    
    /********** Datenbank connecten **********/
    require_once ('config.php');
    $db_link = mysql_connect ($MySQLHost, $MySQLBenutzer, $MySQLKennwort);
    mysql_select_db($MySQLDatenbank);
    
    /********** Daten in Datenbank speichern **********/
    $dateiname = $_FILES['UserFile']['name'];
    if ($_POST['Area'] == "Sculptures") { $into = "Skulpturen"; }
    elseif ($_POST['Area'] == "Paintings")   { $into = "Paintings"; }
    
    $eintrag="INSERT INTO ".$into." (Datei, Titel, Jahr, Beschreibung) VALUES ('".$dateiname."','".$Title."','".$Year."','".$Description."')";
    mysql_query($eintrag) or die("Fehler beim eintragen in die Tabelle.");
    
    /********** Datenbank disconnecten **********/
    mysql_close($db_link);
    ?>
    
    <br />
    <a href="../admin.php">Zur Adminseite</a>
    </body>


    Zumal ich eher vermute, dass der 500er Fehler nicht durch dieses oder ein anderes PHP Script hervorgerufen wird. Wäre natürlich möglich, in erster Linie tippe ich aber auf etwas anderes...
  5. Autor dieses Themas

    ranulf-streuff

    ranulf-streuff hat kostenlosen Webspace.

    Erstmal vielen Dank für die Antworten.
    Ich habe jetzt fabos Version genommen, und die Fehlermeldung ist weg, nur das Thumbnail erstellen klappt noch nicht (Die Fehlermeldung mit (2))

    Beitrag zuletzt geändert: 5.11.2010 18:52:49 von ranulf-streuff
  6. Dann wirds am fehlerhaften Type liegen. Was ergibt

    else { die ("Es ist ein Fehler beim erstellen des Thumbnails aufgetreten. (2 - ".$type.")"); }
  7. m*****t

    Hi,

    nochmal ne Anmerkung in eine andere Richtung. Dein Passwort sollte gehasht werden. Geht um diese Zeile:
    $_POST['Password'] == $LoginKennwort;


    Schreib lieber sowas:
    sha1($_POST['Password']) == $hashed_password);
    // oder
    md5($_POST['Password']) == $hashed_password);

    Wobei das PW natürlich aus der DB kommen sollte. Da gibt es spezielle Felder für bei MySQL.

    HTH,
    Ben
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!