Sponsor-Board.de
PHP Problem - upload

+- Sponsor-Board.de (https://www.sponsor-board.de)
+-- Forum: Community (/forumdisplay.php?fid=56)
+--- Forum: Hilfe (/forumdisplay.php?fid=102)
+---- Forum: Scripting (/forumdisplay.php?fid=108)
+---- Thema: PHP Problem - upload (/showthread.php?tid=25747)


PHP Problem - upload - Aaron - 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 Mad

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 Biggrin

Kann mir jmd helfen ? Bin über jede Hilfe dankbar! Smile

mfg


RE: PHP Problem - upload - coloskopie - 15.05.2012 11:28

Kommt ne Fehlermeldung? Schon versucht zu debugen?

Und seit wann gibt man beim Upload kein MimeType mit?


RE: PHP Problem - upload - Aaron - 15.05.2012 11:30

er gibt dies aus :
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";

also müsste es davor an der if-Verzweigung liegen, oder ?


RE: PHP Problem - upload - coloskopie - 15.05.2012 11:33

1. Schreibrechte auf dem Verzeichnis?
2. Mime Type mitgegeben?

Wenn du beides hast, klappts auch mit dem upload!


RE: PHP Problem - upload - Aaron - 15.05.2012 11:36

Schreibrechte sind gesetzt Wink

was meinst du mit Mime Type mitgeben ?


RE: PHP Problem - upload - coloskopie - 15.05.2012 11:39

Was gibt $_FILES aus?


und noch ne andere Sache...warum loggst du dich per mysql mit root ein?


RE: PHP Problem - upload - Aaron - 15.05.2012 12:13

was soll $_FILES denn ausgeben ? :/


RE: PHP Problem - upload - Aaron - 23.05.2012 07:30

Problem dank dem User "Kokspflanze" gelöst Wink

neues hat sich mit der Zeit aufgetan :
Wenn ich jetzt eine Eingabe von einem Textfeld in der Datenbank speicher, wie erzeuge ich dann, die im Textfeld gemachten Zeilenumbrüche ? Denn diese werden nicht bei der Ausgabe angezeigt

Danke für jede Hilfe! Smile


RE: PHP Problem - upload - RiekMedia - 23.05.2012 08:27

[Link: Registrierung erforderlich]


RE: PHP Problem - upload - Aaron - 23.05.2012 08:33

danke, Problem gelöst Wink