15.05.2012, 11:03
Mahlzeit,
habe folgendes Problem :
Unzwar möchte ich, dass durch ein Formular ein Bild hochgeladen wird, nat. wird es erst auf Größe, auf Maße und Endung überprüft.
Dann soll die Variable in die DB geschrieben werden, damit man nacher auf das hochgeladene Bild wieder zugreifen kann. Nur irgendwie stoppt es nach dem überprüfen immer
Das Formular :
habe folgendes Problem :
Unzwar möchte ich, dass durch ein Formular ein Bild hochgeladen wird, nat. wird es erst auf Größe, auf Maße und Endung überprüft.
Dann soll die Variable in die DB geschrieben werden, damit man nacher auf das hochgeladene Bild wieder zugreifen kann. Nur irgendwie stoppt es nach dem überprüfen immer

Das Formular :
PHP-Code:
echo "<form ".
" name=\"Avatar\" ".
" action=\"system/checkbearbeiten-avatar-upload.php\" ".
" method=\"post\" ".
" enctype=\"multipart/form-data\" ".
" accept-charset=\"ISO-8859-1\">\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"max. 20kb\nmax 150x150 Pixel\n .jpg .gif oder .png\">\n".
"Avatar :\n".
"</span>\n";
if($row['Avatar']=='')
echo "<br><img alt=\"\" src=\"upload/avatare/default.png\" />";
else
echo "<br><img src=\"upload/avatare/".htmlentities($row['Avatar'], ENT_QUOTES)."\">\n";
if($row['Avatar']=='') {
echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"".(0.02*1024*1024)."\">";
echo "<input name=\"pic\" type=\"file\">\n";
echo "<input class=\"derinput\" type=\"submit\" name=\"submit\" value=\"Avatar hochladen\">\n";
}
else
echo "<input class=\"derinput\" type=\"submit\" name=\"submit\" value=\"Avatar löschen\">\n";
echo "</form>\n";
Das Script :
PHP-Code:
<?php
session_start();
error_reporting(E_ALL);
$MYSQL_HOST = 'localhost';
$MYSQL_USER = 'root';
$MYSQL_PASS = 'passwort';
$MYSQL_DATA = 'flipspot';
$connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());
$sql = "SELECT
Avatar
FROM
User
WHERE
ID = '".mysql_real_escape_string($_SESSION['UserID'])."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
$row = mysql_fetch_assoc($result);
// Avatar hochladen
if(isset($_POST['submit']) AND $_POST['submit'] == "Avatar hochladen") {
$errors = array();
// Uploadfehler prüfen
switch ($_FILES['pic']['error']){
case 1: $errors[] = "Bitte wählen Sie eine Datei aus, die kleiner als 20 KB ist.";
break;
case 2: $errors[] = "Bitte wählen Sie eine Datei aus, die kleiner als 20 KB ist.";
break;
case 3: $errors[] = "Die Datei wurde nur teilweise hochgeladen.";
break;
case 4: $errors[] = "Es wurde keine Datei ausgewählt.";
break;
default : break;
}
// Prüfen, ob eine Grafikdatei vorliegt
if(!@getimagesize($_FILES['pic']['tmp_name']))
$errors[] = "Ihre Datei ist keine gültige Grafikdatei.";
else {
// Mime-Typ prüfen
$erlaubte_typen = array('image/pjpeg',
'image/jpeg',
'image/gif',
'image/png'
);
if(!in_array($_FILES['pic']['type'], $erlaubte_typen))
$errors[] = "Der Mime-Typ ihrer Datei ist verboten.";
// Endung prüfen
$erlaubte_endungen = array('jpeg',
'jpg',
'gif',
'png'
);
// Endung ermitteln
$endung = strtolower(substr($_FILES['pic']['name'], strrpos($_FILES['pic']['name'], '.')+1));
if(!in_array($endung, $erlaubte_endungen))
$errors[] = "Die Dateiendung muss .jpeg .jpg .gif oder .png lauten ";
// Ausmaße prüfen
$size = getimagesize($_FILES['pic']['tmp_name']);
if ($size[0] > 150 OR $size[1] > 150)
$errors[] = "Die Datei darf maximal 150 Pixel breit und 150 Pixel hoch sein.";
}
// Dateigröße prüfen
if($_FILES['pic']['size'] > 0.2*1024*1024)
$errors[] = "Bitte wählen Sie eine Datei aus, die kleiner als 20 KB ist.";
if(count($errors)){
echo "Ihr Avatar konnte nicht gespeichert werden.<br>\n".
"<br>\n";
foreach($errors as $error)
echo $error."<br>\n";
echo "<br>\n".
"Zurück zum <a href=\"../index.php?id=profil&uid=" . $_SESSION['UserID'] . "\">Profil</a>\n";
}
else {
// Bild auf dem Server speichern
$uploaddir = 'upload/avatare/';
// neuen Bildname erstellen
$Name = "IMG_".substr(microtime(),-8).".".$endung;
if (move_uploaded_file($_FILES['pic']['tmp_name'], $uploaddir.$Name)) {
$sql = "UPDATE
User
SET
Avatar = '".mysql_real_escape_string(trim($Name))."'
WHERE
ID = ".$_SESSION['UserID']."
";
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
echo "Ihr Avatar wurde erfolgreich gespeichert.<br>\n".
"Zurück zum <a href=\"../index.php?id=profil&uid=" . $_SESSION['UserID'] . "\">Profil</a>\n";
}
else {
echo "Es trat ein Fehler auf, bitte versuche es später erneut.<br>\n".
"Zurück zum <a href=\"../index.php?id=profil&uid=" . $_SESSION['UserID'] . "\">Profil</a>\n";
}
}
}
// Avatar löschen
elseif(isset($_POST['submit']) AND $_POST['submit'] == 'Avatar löschen'){
// Bildname des Avatars aus der Datenbank holen
$sql = "SELECT
Avatar
FROM
User
WHERE
ID = '".$_SESSION['UserID']."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
$row = mysql_fetch_assoc($result);
// Datei löschen
unlink('upload/avatare/'.$row['Avatar']);
// Bildname des Avatars als leeren String setzen
$sql = "UPDATE
User
SET
Avatar = ''
WHERE
ID = '".$_SESSION['UserID']."'
";
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
echo "Ihr Avatar wurde erfolgreich gelöscht.<br>\n".
"Zurück zum <a href=\"../index.php?id=profil&uid=" . $_SESSION['UserID'] . "\">Profil</a>\n";
}
?>
Es stoppt beim speichern des Bildes auf dem Server.
Habe es jetzt schon ca. 1 Stunde probiert und bin nervlich am Ende
Kann mir jmd helfen ? Bin über jede Hilfe dankbar!
mfg