Uploadscript anpassen

Alexnder Ruff

Mitglied
Moin Moin Forum,

ich habe ein Uploadscrip welches Bilder auf einen Webserver hochläd und die Bildinformationen in einer Mysql Tabelle ablegt.

Hier mal das script:
PHP:
<?php

# DB Host
$server = "xxx";
# DB Name
$datenbank = "xxx";
# DB Username
$user = "xxx";
# DB Passwort
$passwort = "xxx";


/* Zugriff auf SQL-Server */
MYSQL_CONNECT($server, $user, $passwort) or die ("<H3>Datenbankserver nicht erreichbar</H3>");
MYSQL_SELECT_DB($datenbank) or die ( "<H3>Datenbank nicht vorhanden</H3>");


// Aktionen und Menue fuer diese Datei
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
if (isset($_GET['action']) && $_GET['action'] != "") {
$action = $_GET['action'];
}
elseif (isset($_POST['action']) && $_POST['action'] != "") {
$action = $_POST['action'];
}

switch ($action) {
case "upload":
    upload();
    break;
default:
    formular();
    break;
}

// Uploadformular
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
function formular($printfehler="") {

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

<title>Untitled</title>


<style type="text/css">
body {
background-color: #f7f7f7;
font-family: Verdana, Arial;
font-size: 12px;
color: #000000;
}

.tborder {
background-color: #979cb0;
}

.tdkopf {
background-color: #dedfe4;
padding: 3px;
border: 1px solid #ffffff;
font-size: 11px;
}

.tdcont {
background-color: #ffffff;
padding: 3px;
font-size: 11px;
width: 50%;
}

form { display: inline;}

.fc {
border: 1px solid #65698d;
font-size: 11px;
background-color: #ffffff;
}

.button {
border: 1px solid #65698d;
font-size: 11px;
background-color: #bac0cd;
}

</style>

</head>
<body>
<div align="center">
<?php

// Fiktive USER ID
$user_id = $_GET['auft_whg'];

// Auslesen der Gesamtsumme aller gespeicherten Bytes
$querybytes = "SELECT SUM(picbytes) FROM picupload WHERE userid = '$user_id'";
$resultsumme = mysql_query($querybytes);
$summebytes = mysql_fetch_array($resultsumme);
if ($summebytes[0] > 0) {
$summekb = sprintf ("%01.2f", $summebytes[0]/1024);
} else {
$summekb = 0;
}

?>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="action" value="upload">
<input type="hidden" name="user_id" value="<?php echo $user_id; ?>">
<table cellspacing="1" cellpadding="0" border="0" width="500" class="tborder">
<tr>
    <td class="tdcont" colspan="2">Insgesamt gespeicherte KB: <?php echo $summekb; ?>&nbsp;</td>
</tr>
<tr>
    <td class="tdcont" colspan="2"><?php echo $printfehler; ?>&nbsp;</td>
</tr>
<tr>
    <td class="tdkopf" colspan="2"><b>&raquo; Dateiupload</b></td>
</tr>
<tr>
    <td class="tdcont">Datei ausw&auml;hlen</td>
    <td class="tdcont"><input class="fc" type="file" name="datei"></td>
</tr>
<tr>
    <td class="tdcont" colspan="2">Erlaubt sind Dateien mit der Endung: jpg, jpeg, gif und png mit einer max. Dateigr&ouml;&szlig;e von 50 kb gestattet.</td>
</tr>
<tr>
   <td class="tdkopf" colspan="2" align="center"><input class="button" type="submit" name="upload" value="Datei hochladen"></td>
</tr>
</table>
</form>
<br>
<?php

// Ausgabe der Bilder des Users
$query = "SELECT DATE_FORMAT( pictime, '%d.%c.%Y um %H:%i:%S Uhr' ) AS datum, picverz, pvorn, pend, picbytes, picwidth, picheight FROM picupload WHERE userid = '$user_id' ORDER BY pictime DESC";
$result = mysql_query($query);
$reihen = mysql_num_rows($result);

if (mysql_num_rows($result)) {
# Ausgabe
while ($daten = mysql_fetch_array ($result)) {

echo 'Datei vom:' . $daten[datum]. '<br><img src="'.$daten[picverz] . '/'.  $daten[pvorn] . '.' . $daten[pend].'" border="0" width="'.$daten[picwidth].'" height="'.$daten[picheight].'" alt="Bild mit '.  $daten[picbytes].' Bytes"><hr>';

}
}
?>
</div>
</body>
</html>
<?php
}

// Uploadfunktion
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
function upload() {

// Array mit erlaubten Dateiendungen
$arr_erlaube_dateityp = array(gif,jpg,jpeg,png);

$dateiname = $_FILES['datei']['name'] ;

// User ID
$user_id = $_POST['user_id'];
$user_id = preg_replace ("/[^0-9]/", "",  $user_id);

if ($dateiname != '') {
$dateiname = preg_replace ("/[^0-9a-zA-Z\.]/", "_",  $dateiname);
}

// Dateiendung ermitteln
$punkt = strrpos($dateiname, '.');
$laenge = strlen($dateiname);
$endung = strtolower(substr($dateiname, -($laenge - $punkt - 1)));
$orginal = strtolower(substr($dateiname, 0, -($laenge - $punkt)));



// Fehlerbehandlung
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
$fehlermeldung = "";
$fehler_gefunden = "";

// Name Check
$errormeldung = "<li>Es wurde keine Datei ausgew&auml;hlt\n";
if (empty($dateiname)) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

$errormeldung = "<li>Der gew&aumlhlte Dateityp ist nicht erlaubt\n";
if (!in_array($endung, $arr_erlaube_dateityp) && !empty($dateiname)) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

$errormeldung = "<li>Die gew&auml;hlte Datei ist zu gro&szlig;, upload abgelehnt. Max 50 kb Dateigr&ouml;&szlig;e sind gestattet.\n";
if ($_FILES['datei']['size'] > (2048 * 1024)) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

// Wenn Fehler - dann aufruf der Fehlerausgabe...
if ($fehler_gefunden) {
$printfehler ="<ol>$fehlermeldung</ol>";
formular($printfehler);
exit;
}

// Zufaelligen Dateiname aus Orginalbildname und Zeit basteln
$bildzeit = time();
$rand_value = randomstring($bildzeit.$orginal);
$savename = $rand_value  . ".$endung";

// In welches Verzeichnis soll die Datei
if ($endung == 'gif') {
$uploadverzeichnis = 'gif';
}
elseif ($endung == 'jpg' || $endung == 'jpeg') {
$uploadverzeichnis = 'jpg';
}
elseif ($endung == 'png') {
$uploadverzeichnis = 'png';
}

// Keine Fehler, dann speichern
if ($printfehler == '') {
move_uploaded_file($_FILES['datei']['tmp_name'], $uploadverzeichnis.'/'.$savename); 
}

// Dateigroesse und Bildabmessungen auslesen
$dateigroesse = filesize($uploadverzeichnis.'/'.$savename);
$picinfo = getimagesize($uploadverzeichnis.'/'.$savename);

// Daten speichern
$orginalname = mysql_real_escape_string($orginal);
MYSQL_QUERY("INSERT INTO picupload (picid, userid, pictime, picverz, picorg, pvorn, pend, picbytes, picwidth, picheight) VALUES('', '$user_id',  NOW(), '$uploadverzeichnis','$orginalname', '$rand_value', '$endung', '$dateigroesse', '$picinfo[0]', '$picinfo[1]')");

header("Location: ./upload.php");
exit;
}


// Zufallszeichen fuer Dateiname
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
function randomstring($dateiname) {
$dateiname = strtolower(substr(md5(microtime()),0,20));
return $dateiname;
}
MYSQL_CLOSE();
?>

Jetzt würde ich noch noch gerne einen Teil einfügen mit denen die hochgeladenen Bilder automatisch in der Größe angepasst werden. Auch dafür habe ich ein script gefunden bin allerdings zu blöd das anzupassen.

Hier mal das Zweite Script:
PHP:
// Original resizen - start
                 if ( $size[0] > 412 ) {
                  $file        = "datei.jpg";
                  $target    = "resized.jpg";
                  $max_width   = "420";
                  $quality     = "90";
                  $src_img     = imagecreatefromjpeg($file);
                  $picsize     = getimagesize($file);
                  $src_width   = $picsize[0];
                  $src_height  = $picsize[1];
                  if($src_width > $max_width)
                  {
                    $convert = $max_width/$src_width;
                    $dest_width = $max_width;
                    $dest_height = ceil($src_height*$convert);
                  }
                  else
                  {
                    $dest_width = $src_width;
                    $dest_height = $src_height;
                  }
                  
                  $dst_img = imagecreatetruecolor($dest_width,$dest_height);
                  imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_width, $dest_height, $src_width, $src_height);
                  imagejpeg($dst_img, "$target", $quality);
                  // Original resizen - ende

Könntet Ihr mir weiter helfen ?


MFG
 
Ich weiß nicht ob es funktioniert, da ungetestet:

füge unter:
PHP:
// Dateigroesse und Bildabmessungen auslesen
$dateigroesse = filesize($uploadverzeichnis.'/'.$savename);
$picinfo = getimagesize($uploadverzeichnis.'/'.$savename);

diesne code hier ein:

PHP:
// Original resizen - start
	 if ( ceil($dateigroesse) > 412 /*gewünschter wert in bytes eintragen*/) {
	  $file        = $savename;
	  $target      = $savename;
	  $max_width   = "500" /*maximale breite des bildes in px*/;
	  $quality     = "90" /*qualität in prozent*/;
	  $src_img     = imagecreatefromjpeg($file);
	  $picsize     = getimagesize($file);
	  $src_width   = $picsize[0];
	  $src_height  = $picsize[1];
	  if($src_width > $max_width)
	  {
		$convert = $max_width/$src_width;
		$dest_width = $max_width;
		$dest_height = ceil($src_height*$convert);
	  }
	  else
	  {
		$dest_width = $src_width;
		$dest_height = $src_height;
	  }
	  
	  $dst_img = imagecreatetruecolor($dest_width,$dest_height);
	  imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_width, $dest_height, $src_width, $src_height);
	  imagejpeg($dst_img, "$target", $quality);
// Original resizen - ende
 
Welche Zeile ist es denn genau? Was steht in dieser Zeile?
Hab eigentlich nur das Script angehängt und die Variablen getauscht.
 
Probiers mal damit:
PHP:
// Original resizen - start
     if ( ceil($dateigroesse) > 412 /*gewünschter wert in bytes eintragen*/) {
      $file        = $savename;
      $target      = $savename;
      $max_width   = "500" /*maximale breite des bildes in px*/;
      $quality     = "90" /*qualität in prozent*/;
      $src_img     = imagecreatefromjpeg($file);
      $picsize     = getimagesize($file);
      $src_width   = $picsize[0];
      $src_height  = $picsize[1];
      if($src_width > $max_width)
      {
        $convert = $max_width/$src_width;
        $dest_width = $max_width;
        $dest_height = ceil($src_height*$convert);
      }
      else
      {
        $dest_width = $src_width;
        $dest_height = $src_height;
      }

      $dst_img = imagecreatetruecolor($dest_width,$dest_height);
      imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_width, $dest_height, $src_width, $src_height);
      imagejpeg($dst_img, "$target", $quality);
      }
// Original resizen - ende

Es wurde lediglich das erste If nicht geschlossen :)
unexpected $end sagt eigentlich schon was Sache ist, irgendwo wurde etwas geöffnet, aber nicht wieder geschlossen.
 
Zuletzt bearbeitet:
O.k, der fehler ist weg, dafür habe ich jetzt massig neue (dafür andere) fehler:

Warning: imagecreatefromjpeg(5728abf5a8fca20bbad2.png) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /home/vhosts/5000150411/topshop-buchholz.de/htdocs/RCVS/wohnung/auftrag/picup/upload.php on line 242

Warning: getimagesize(5728abf5a8fca20bbad2.png) [function.getimagesize]: failed to open stream: No such file or directory in /home/vhosts/5000150411/topshop-buchholz.de/htdocs/RCVS/wohnung/auftrag/picup/upload.php on line 243

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/vhosts/5000150411/topshop-buchholz.de/htdocs/RCVS/wohnung/auftrag/picup/upload.php on line 258

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/vhosts/5000150411/topshop-buchholz.de/htdocs/RCVS/wohnung/auftrag/picup/upload.php on line 259

Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/vhosts/5000150411/topshop-buchholz.de/htdocs/RCVS/wohnung/auftrag/picup/upload.php on line 260

Warning: Cannot modify header information - headers already sent by (output started at /home/vhosts/5000150411/topshop-buchholz.de/htdocs/RCVS/wohnung/auftrag/picup/upload.php:242) in /home/vhosts/5000150411/topshop-buchholz.de/htdocs/RCVS/wohnung/auftrag/picup/upload.php on line 269

Ich Peil das nicht wirklich!
 
Warning: imagecreatefromjpeg(5728abf5a8fca20bbad2.png) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /home/vhosts/5000150411/topshop-buchholz.de/htdocs/RCVS/wohnung/auftrag/picup/upload.php on line 242
Du versuchst eine nicht-existente Datei aufzurufen, Datei upload.php, Zeile 242
Dein Aufruf sagt dem Compiler, dass die Datei im Ordner picup/ liegt.




Warning: getimagesize(5728abf5a8fca20bbad2.png) [function.getimagesize]: failed to open stream: No such file or directory in /home/vhosts/5000150411/topshop-buchholz.de/htdocs/RCVS/wohnung/auftrag/picup/upload.php on line 243
Du versuchst eine nicht-existente Datei aufzurufen, Datei upload.php, Zeile 243
Dein Aufruf sagt dem Compiler, dass die Datei im Ordner picup/ liegt.




Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/vhosts/5000150411/topshop-buchholz.de/htdocs/RCVS/wohnung/auftrag/picup/upload.php on line 258
Führt höchstwahrscheinlich auf die ersten beiden Fehler zurück, da die Datei nicht geöffnet werden konnte.

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/vhosts/5000150411/topshop-buchholz.de/htdocs/RCVS/wohnung/auftrag/picup/upload.php on line 259
Führt höchstwahrscheinlich auf die ersten beiden Fehler zurück, da die Datei nicht geöffnet werden konnte.

Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/vhosts/5000150411/topshop-buchholz.de/htdocs/RCVS/wohnung/auftrag/picup/upload.php on line 260
Führt höchstwahrscheinlich auf die ersten beiden Fehler zurück, da die Datei nicht geöffnet werden konnte.

Warning: Cannot modify header information - headers already sent by (output started at /home/vhosts/5000150411/topshop-buchholz.de/htdocs/RCVS/wohnung/auftrag/picup/upload.php:242) in /home/vhosts/5000150411/topshop-buchholz.de/htdocs/RCVS/wohnung/auftrag/picup/upload.php on line 269
Hier sendest du einen header, obwohl schon Text an den Browser gesendet wurde.
 
Hallo Maniac_81,

hat Super geklappt. Jetzt habe ich nur noch ein kleines Problem aber das bekomme ich selbst hin.

Falls nicht melde ich mich vielleicht noch mal bei Dir!

Danke auch back2toxic !

Alex
 
Zurück