Registrieren  •  Login 
  
 
im Forum


 FAQ   Mitgliederliste   Benutzergruppen   Teamseite   Suchen 

Uplaod
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
rami
Mitglied
Mitglied



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 759

BeitragVerfasst am: 19.07.2007, 20:35    Titel: Uplaod

Für meinen Userbereich versuche ich grade anhand des Beispiels aus dem Buch PHP-Sicherheit ein Uploadscript für Avatare einzubauen.
Hier erstmal der Code:
PHP-Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
$titel 
'Avatar-Upload';
include(
'header.php');
  if(
$_POST['send']){
    if(
$login){
        
$error false;
      if(!isset(
$_FILES['filename'])){
        
$error "Keine Angabe der Datei!";
        
// Fehler 001
      
}
      if(
$_FILES['filename']['error'] != UPLOAD_ERR_OK){
        
$error "Es ist ein Problem aufgetreten";
        
// Fehler 002
      
}
      if(!
move_uploaded_file($_FILES['filename']['tmp_name'], "/upload/file.png")){
        
$error "Fehler beim Upload.";
        
// Fehler 003
      
}
      if(
getimagesize($_FILES['filename']['tmp_name']) == FALSE){
        
$error "Kein Valides Bild.";
        
// Fehler 004
      
}
      if(
$_FILES['filename']['size'] > 15000){
        
$error "Datei zu groß.";
        
// Fehler 005
      
}
      
$size getimagesize($_FILES['filename']['tmp_name']);
      if(
$size[0] > 150 OR $size[1] > 150){
        
$error "Das Bild ist größer als 150x150 Pixel.";
        
// Fehler 006
      
}
      
$extension substr(strrchr($_FILES['filename']['name'], "."), 1);
      if(
stristr($extension'.gif')){
        
$extension '.gif';
      }elseif(
stristr($extension'.png')){
        
$extension '.png';
      }elseif(
stristr($extension'.jpg')){
        
$extension '.jpg';
      }else{
        
$error "Ungültiger Dateityp";
        
// Fehler 007
      
}
      
/* VERUSCH mit anderer Überprüfung
      if($size[2] == 1){
        $extension = '.gif';
      }elseif($size[2] == 3){
        $extension = '.png';
      }elseif($size[2] == 2){
        $extension = '.jpg';
      }else{
        $error = "Ungültiger Dateityp";
        // Fehler 007b
      }
      */
        
$newfilename md5(microtime().rand(1000032000));
      if(!
$error){
      
move_uploaded_file($_FILES['filename']['tmp_name'], '/uploads/'.$newfilename.$extension);
      echo 
"Speicherort: http://www.raphaelmichel.de/uploads/"$newfilename$extension"";
        
// OK
      
}else{
      echo 
'<div width="100%" style="background-color: red;"><center><b>FEHLER!</b><br />'$error'</error></div>';
      }
    }else{
      echo 
"Erst einloggen";
    }
  }else{
    echo 
'<h1>Avatar hochladen</h1>';
    if(
$login){
      echo 
'<form action="" method="post" enctype=multipart/form-data" onsubmit="send.value = \'Uploading...\'; send.disabled = true;">Maximale Dateigröße: 15KB, Maximale Maße: 150x150; Formate: gif, jpg, png<input type="file" name="filename"><input type="hidden" name="MAX_FILE_SIZE" value="15000"><br /><input type="submit" name="send" value="Hochladen">';
    }else{
      echo 
"Erst einloggen";
    }
  }
include(
'footer.php');
?>

Es tritt immer der Fehler auf, den ich mit Fehler 007 bezeichnet habe.

Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von rami.
Nach oben
Benutzer-Profile anzeigen rami ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13945
Wohnort: Wien

BeitragVerfasst am: 19.07.2007, 20:45    Titel:

Kleiner Tipp, mache es gleich mit einem Regulären Ausdruck in einem, geht schneller Wink
PHP-Code:
1
2
3
4
5
6
7
8
<?php

if(!preg_match('/^(.*?)\.(gif|png|jpg|jpeg)$/'strtolower($_FILES['filename']['name'])))
{
  
// Fehlerausgabe...
}

?>



MfG Christian
_________________
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
rami
Mitglied
Mitglied



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 759

BeitragVerfasst am: 19.07.2007, 21:21    Titel:

a)
wenn dann (gif|png|jpg|jpeg|GIF|PNG|JPG|JPEG) oder?
b)
ist dann nicht auch xxx.gif.php valid weil gif vorkommt? trotzdem wärs ne php-datei.
d) tut nicht.
Aktueller Code (Fehler 007c):
Ich ahbs mit der Datei im Anhang versucht, du kannsts ja mal testen auf http://www.raphaelmichel.de/avaupload.php
PHP-Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
$titel 
'Avatar-Upload';
include(
'header.php');
  if(
$_POST['ok']){
    if(
$login){
        
$error false;
      if(!isset(
$_FILES['filename'])){
        
$error "Keine Angabe der Datei! (Fehler 001)";
      }
      if(
$_FILES['filename']['error'] != UPLOAD_ERR_OK){
        
$error "Es ist ein Problem aufgetreten (Fehler 002)";
      }
      if(!
move_uploaded_file($_FILES['filename']['tmp_name'], "/upload/file.png")){
        
$error "Fehler beim Upload. (Fehler 003)";
      }
      if(
getimagesize($_FILES['filename']['tmp_name']) == FALSE){
        
$error "Kein Valides Bild. (Fehler 004)";
      }
      if(
$_FILES['filename']['size'] > 15000){
        
$error "Datei zu groß. (Fehler 005)";
      }
      
$size getimagesize($_FILES['filename']['tmp_name']);
      if(
$size[0] > 150 OR $size[1] > 150){
        
$error "Das Bild ist größer als 150x150 Pixel. (Fehler 006)";
      }
      
$extension substr(strrchr($_FILES['filename']['name'], "."), 1);
      
      if(!
preg_match('/^(.*?)\.(gif|png|jpg|jpeg)$/'strtolower($_FILES['filename']['name']))) 

    
$error "Ungültiger Dateityp (Fehler 007c)";
}
      
/*  if(stristr($extension, '.gif')){
        $extension = '.gif';
      }elseif(stristr($extension, '.png')){
        $extension = '.png';
      }elseif(stristr($extension, '.jpg')){
        $extension = '.jpg';
      }else{
        $error = "Ungültiger Dateityp (Fehler 007)";
      }*/
    
    /*  if($size[2] == 1){
        $extension = '.gif';
      }elseif($size[2] == 3){
        $extension = '.png';
      }elseif($size[2] == 2){
        $extension = '.jpg';
      }else{
        $error = "Ungültiger Dateityp (Fehler 007b)";
      }
      */
        
$newfilename md5(microtime().rand(1000032000));
      if(!
$error){
      
move_uploaded_file($_FILES['filename']['tmp_name'], '/uploads/'.$newfilename.$extension);
      echo 
"Speicherort: http://www.raphaelmichel.de/uploads/"$newfilename$extension"";
      }else{
      echo 
'<div width="100%" style="background-color: red;"><center><b>FEHLER!</b><br />'$error'</error></div>';
      }
    }else{
      echo 
"Erst einloggen";
    }
  }else{
    echo 
'<h1>Avatar hochladen</h1>';
    if(
$login){
      echo 
'<form action="" method="post" enctype=multipart/form-data" onsubmit="send.value = \'DIe Datei wird hochgeladen. Bitte warten...\'; send.disabled = true; filename.disabled = true;">Maximale Dateigröße: 15KB, Maximale Maße: 150x150; Formate: gif, jpg, png<input type="file" name="filename"><input type="hidden" name="MAX_FILE_SIZE" value="15000"><input type="hidden" name="ok" value="ok"><br /><input type="submit" name="send" value="Hochladen">';
    }else{
      echo 
"Erst einloggen";
    }
  }
include(
'footer.php');
?>


Dieser Beitrag wurde insgesamt 2 mal geändert. Zuletzt von rami.
Nach oben
Benutzer-Profile anzeigen rami ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Qu4rK
Mitglied
Mitglied



Anmeldedatum: 12.07.2006
Geschlecht: Männlich
Beiträge: 261
Wohnort: Bayreuth

BeitragVerfasst am: 19.07.2007, 21:31    Titel:

rami hat Folgendes geschrieben:
a) wenn dann (gif|png|jpg|jpeg|GIF|PNG|JPG|JPEG) oder?

http://php.net/strtolower. Wink
_________________
"Ubuntu" - an African word, meaning "Slackware is too hard for me"
Nach oben
Benutzer-Profile anzeigen Qu4rK ist derzeit offline Private Nachricht senden Website dieses Benutzers besuchen
rami
Mitglied
Mitglied



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 759

BeitragVerfasst am: 19.07.2007, 21:34    Titel:

öh...hab mich verlesen, sry.
Nach oben
Benutzer-Profile anzeigen rami ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13945
Wohnort: Wien

BeitragVerfasst am: 20.07.2007, 09:29    Titel:

Das ^ am Anfang und das $ am Ende bedeuten, dass das am Ende oder am Anfang stehen muss, in dem Fall dann eben die Dateiendung Wink
Arrow www.php.net/regex


MfG Christian
_________________
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
rami
Mitglied
Mitglied



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 759

BeitragVerfasst am: 20.07.2007, 16:18    Titel:

aso, tut aber trotzdem nicht.
Nach oben
Benutzer-Profile anzeigen rami ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13945
Wohnort: Wien

BeitragVerfasst am: 20.07.2007, 16:50    Titel:

Kommt ein Fehler? Der Reguläre Ausdruck muss jedenfalls funktionieren Wink
Dann hast vielleicht was anderes falsch...

Heißt das Inputfeld zum Beispiel wirklich filename?


MfG Christian
_________________
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
rami
Mitglied
Mitglied



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 759

BeitragVerfasst am: 20.07.2007, 16:56    Titel:

Code:
<input type="file" name="filename">

es kommt nur meine eigene fehlermeldung
Zitat:
Ungültiger Dateityp (Fehler 007c)
Nach oben
Benutzer-Profile anzeigen rami ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13945
Wohnort: Wien

BeitragVerfasst am: 20.07.2007, 17:18    Titel:

Dann debuge das ganze mal richtig Wink

Inhalt von $_FILES['filename']['tmp_name'] ausgeben oder gleich mit var_dump() $_FILES ausgeben, dann siehst gleich alles Wink


MfG Christian
_________________
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
rami
Mitglied
Mitglied



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 759

BeitragVerfasst am: 20.07.2007, 21:26    Titel:

aus
PHP-Code:
1
<?php var_dump($_FILES); ?>

wird
Zitat:
array(0) { }

und bei
PHP-Code:
1
<?php echo $_FILES['filename']['tmp_name']; ?>

wird nichts ausgegeben.

Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von rami.
Nach oben
Benutzer-Profile anzeigen rami ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13945
Wohnort: Wien

BeitragVerfasst am: 20.07.2007, 21:32    Titel:

Zitat:
array(0) { }

Das sagt alles, es ist keine Datei hochgeladen Wink

Vom Fehler her kann ich jetzt aber sofort sagen, du hast wahrscheinlich im Form-Tag folgendes vergessen:
Code:
enctype="multipart/form-data"

Wenn das fehlt, kann man ausfüllen was man will, der Browser sendet die Datei dann erst gar nicht Wink


MfG Christian
---
PS: Man sollte sich immer einmal ein ganzes Array zur Fehlersuche ausgeben lassen Wink

_________________
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
rami
Mitglied
Mitglied



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 759

BeitragVerfasst am: 20.07.2007, 21:33    Titel:

aaaaah...
ich hab zwar dran gedacht, hab aber statt
Code:
enctype="multipart/form-data"

dies geschrieben (aus versehen):
Code:
enctype=multipart/form-data"


edit:
trotz dem formular mit
Code:
<form action="" method="post" enctype="multipart/form-data" onsubmit="send.value = \'Die Datei wird hochgeladen. Bitte warten...\'; send.disabled = true; filename.disabled = true;">

liefert var_dump mit $_FILES
Zitat:
array(0) { }


Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von rami.
Nach oben
Benutzer-Profile anzeigen rami ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13945
Wohnort: Wien

BeitragVerfasst am: 21.07.2007, 08:58    Titel:

  1. action="" - Da gehört auch was rein Wink
  2. filename.disabled = true; - Das Problem kenne ich auch, wenn man ein Formularfeld mit JS beim Absenden deaktiviert, wird es auch nicht mehr vom Browser mitgesendet, also bitte den Teil weglassen Wink



MfG Christian
_________________
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
rami
Mitglied
Mitglied



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 759

BeitragVerfasst am: 21.07.2007, 14:43    Titel:

auch wenn das formular mit
Code:
<form action="avaupload.php" method="post" enctype="multipart/form-data" onsubmit="send.value = \'Die Datei wird hochgeladen. Bitte warten...\'; send.disabled = true;">

beginnt, kommt im var_dump
Zitat:
array(0) { }
Nach oben
Benutzer-Profile anzeigen rami ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht teilnehmen.
Du kannst Dateien in diesem Forum nicht hochladen.
Du kannst Dateien in diesem Forum nicht herunterladen.

 

Alle Zeiten sind GMT + 2 Stunden (Sommerzeit)
Aktuelles Datum und Uhrzeit: 08.04.2020, 00:00
Nach oben
Valid HTML 4.01 Transitional
Valid CSS!
Software based on work from the phpBB-Group  •  Deutsche Übersetzung von phpBB.de

netcup - Internetdienstleistungen
 
 
[ happytec.at | forum.happytec.at | blog.happytec.at | esports.happytec.at | event.happytec.at ]