You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Monday, November 6th 2006, 7:40pm

php Uploadscript

Hi Leute!
Vorerst mal: Ich habe von php keine Ahnung (nur HTML), habe diesen Script nur kopiert und bisschen veraendert^^.
Ich habe hier einen Uploadscript, aber er funktinoiert aus irgend einem Grund nicht.
Wenn ich eine Datei angebe, dann auf "Hochladen" klicke, dann arbeitet zwar mein Browser, aber die Datei ist danach trotzdem nicht oben :/
(Mein server unterstuetzt natuerlich php;))

(Und wie kann ich auch eine Fortschrittsanzeige einblenden lassen?)

Was kann da falsch sein? Kann mir wer helfen? Danke^^

PHP Quellcode

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 
ini_set ('error_reporting', E_ALL); 
$pfad = 'upload/';  // Hier den Ordner relativ zum Uploadscrip, in die die Dateien hochgeladen werden angeben. 
$dateiupload_erfolgreich = false; 
 
 
function CheckFilename($dateiname,$pfad) 
    { 
    global $fehler; $fehler = array(); 
    if(!in_array(strtolower(substr($dateiname,-4)),array('.jpg','.jpeg','.png','.gif','.zip','.rar','.bmp','.exe','.txt','.doc','.mp3','.wma','.wav','.html','.htm','.mpg','.avi','.pdf','.wmv','.xls','.swf','.fla','.ppt','.mov'))) array_push($fehler, 'Falsches Dateiformat! Erlaubte Dateiformate: .jpg, .jpeg, .png, .gif, .zip, .rar, .bmp, .exe, .txt, .doc, .mp3, .wma, .wav, .html, .htm, .mpg, .avi, .pdf, .wmv, .xls, .swf, .fla, .ppt, .mov'); // In das array erlaubte Dateiformate eintragen und gegebenenfals die Fehlermeldung anpassen. Bitte diese Zeile aus Sicherheitsgründen auf gar keinen Fall löschen! 
    return (sizeof($fehler)) ? false : $dateiname; 
} 
 
 
function CheckFile($dateiname_temp,$dateifehler,$dateigroesse) 
    { 
    global $fehler; $fehler = array(); 
         switch ($dateifehler) { 
    case '1': $dateifehler_erklaerung ='Die hochgeladene Datei überschreitet die in der Anweisung upload_max_filesize in php.ini festgelegte Größe.'; break; 
    case '2': $dateifehler_erklaerung = 'Die hochgeladene Datei überschreitet die in dem HTML Formular mittels der Anweisung MAX_FILE_SIZE angegebene maximale Dateigröße.'; break; 
    case '3': $dateifehler_erklaerung = 'Die Datei wurde nur teilweise hochgeladen.'; break; 
    case '4': $dateifehler_erklaerung = 'Es wurde keine Datei hochgeladen.'; break; 
    } 
    if($dateifehler) array_push($fehler, $dateifehler_erklaerung); 
    if ($dateigroesse < 1) array_push($fehler, 'Sie haben versucht keine oder eine lehre Datei hochzuladen.'); 
    return (sizeof($fehler)) ? false : $dateiname_temp; 
} 
 
 
if(!empty($_POST['Send'])) 
{ 
    if ($dateiname_temp = CheckFile($_FILES['Datei']['tmp_name'],$_FILES['Datei']['error'],$_FILES['Datei']['size'])) 
    { 
        if ($dateiname = CheckFilename($_FILES['Datei']['name'],$pfad)) 
        { 
            move_uploaded_file($dateiname_temp, $pfad.$dateiname); 
            if (filesize($pfad.$dateiname)<1) die ('Sie haben versucht eine leerer Datei hochzuladen!'); 
            $dateiupload_erfolgreich = true; 
        } 
        else $fehlermeldungen_ausgeben = true; 
    } 
    else $fehlermeldungen_ausgeben = true; 
} 
 
 
 
 
?> 
<html> 
<head> 
<title>Datei-Upload</title> 
</head> 
<body> 
<?php 
if ($dateiupload_erfolgreich) 
{ 
?>Ihre Datei (&quot;<?php echo $dateiname; ?>&quot;) wurde hochgeladen. Sie können nun weitere Dateien hochladen.<?php 
} 
elseif (!empty($fehler)) 
{ 
    ?> 
    <br>Es sind folgende Fehler aufgetreten:<br> 
    <?php 
    foreach ($fehler as $fehlermeldung) { 
    echo $fehlermeldung.'<br>'; 
    } 
?>Beseitigen sie wenn möglich den Fehler und versuchen sie es erneut.<?php 
} 
?>  
<form action="upload.php" enctype="multipart/form-data" method="post">  
    <input type="file" size="65" name="datei">  
    <input type="submit" value="Hochladen">  
</form>   
</body> 
</html>

2

Monday, November 6th 2006, 8:39pm

gib mal mehr infos
es sind ja fehlermeldungen implementiert

was passiert nachdem du auf upload geklickt hast und der browser vor sich hingearbeitet hat?

"Ihr Datei wurde hochgeladen" oder "Es sind Fehler aufgetreten"

Ein Fortschrittsbalken lässt sich mit üblichen mitteln nicht realisieren

3

Monday, November 6th 2006, 8:41pm

Hast du CHMOD des Ordnes in den du lädst geändert?

4

Tuesday, November 7th 2006, 4:09am

CHMOD...was is das? lol

Also, ich habe es zuvor mit einem anderen Uploadscript versucht, der hat funktioniert, allerdings konnte man damit nur gif, png und jpeg -Dateien hochladen, was mir nicht recht war.

(Wenn ich eine Datei ausgewählt habe und dann auf "Hochladen" klicke, dann arbeitet zuerst der Browser (wie lang hängt davon ab wie groß die Datei ist), dann verschwindet der Pfad zu der Datei die man hochladen will (in der Textbox), und danach passiert gar nix mehr, man sieht also nur die Ausgangsseite, ohne irgendeiner Fehlermeldung.

Aber seht doch selbst: :)

www.cyberwusl.de/upload.php


PS:
Achja, und wenn ich irgend etwas in das Textfeld eingebe (zB "shfoöshgjlh" lol) dann passiert das selbe, eine Fehlermeldung wird dennoch nicht ausgegeben.

Man könnte das ganze so beschreiben:
Private Sub btnHochladen.onClick()
txtPfadfeld.text = " "
End Sub

(So in etwa, und natürlich dass der Browser vorher arbeitet^^ ;))

5

Tuesday, November 7th 2006, 8:43am

Re: php Uploadscript

Das müsste funktionieren :D

PHP Quellcode

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
<?php 
ini_set ('error_reporting', E_ALL); 
$pfad = 'upload/';  // Hier den Ordner relativ zum Uploadscrip, in die die Dateien hochgeladen werden angeben. 
$dateiupload_erfolgreich = false; 
 
 
function CheckFilename($dateiname,$pfad) 
    { 
    global $fehler; $fehler = array(); 
    if(!in_array(strtolower(substr($dateiname,-4)),array('.jpg','.jpeg','.png','.gif','.zip','.rar','.bmp','.exe','.txt','.doc','.mp3','.wma','.wav','.html','.htm','.mpg','.avi','.pdf','.wmv','.xls','.swf','.fla','.ppt','.mov'))) array_push($fehler, 'Falsches Dateiformat! Erlaubte Dateiformate: .jpg, .jpeg, .png, .gif, .zip, .rar, .bmp, .exe, .txt, .doc, .mp3, .wma, .wav, .html, .htm, .mpg, .avi, .pdf, .wmv, .xls, .swf, .fla, .ppt, .mov'); // In das array erlaubte Dateiformate eintragen und gegebenenfals die Fehlermeldung anpassen. Bitte diese Zeile aus Sicherheitsgründen auf gar keinen Fall löschen! 
    return (sizeof($fehler)) ? false : $dateiname; 
} 
 
 
function CheckFile($dateiname_temp,$dateifehler,$dateigroesse) 
    { 
    global $fehler; $fehler = array(); 
         switch ($dateifehler) { 
    case '1': $dateifehler_erklaerung ='Die hochgeladene Datei überschreitet die in der Anweisung upload_max_filesize in php.ini festgelegte Größe.'; break; 
    case '2': $dateifehler_erklaerung = 'Die hochgeladene Datei überschreitet die in dem HTML Formular mittels der Anweisung MAX_FILE_SIZE angegebene maximale Dateigröße.'; break; 
    case '3': $dateifehler_erklaerung = 'Die Datei wurde nur teilweise hochgeladen.'; break; 
    case '4': $dateifehler_erklaerung = 'Es wurde keine Datei hochgeladen.'; break; 
    } 
    if($dateifehler) array_push($fehler, $dateifehler_erklaerung); 
    if ($dateigroesse < 1) array_push($fehler, 'Sie haben versucht keine oder eine lehre Datei hochzuladen.'); 
    return (sizeof($fehler)) ? false : $dateiname_temp; 
} 
 
 
if(!empty($_POST['Send'])) 
{ 
    if ($dateiname_temp = CheckFile($_FILES['Datei']['tmp_name'],$_FILES['Datei']['error'],$_FILES['Datei']['size'])) 
    { 
        if ($dateiname = CheckFilename($_FILES['Datei']['name'],$pfad)) 
        { 
            move_uploaded_file($dateiname_temp, $pfad.$dateiname); 
            if (filesize($pfad.$dateiname)<1) die ('Sie haben versucht eine leerer Datei hochzuladen!'); 
            $dateiupload_erfolgreich = true; 
        } 
        else $fehlermeldungen_ausgeben = true; 
    } 
    else $fehlermeldungen_ausgeben = true; 
} 
 
//else{echo"Button wurde nicht bestätigt";}
 
?> 
<html> 
<head> 
<title>Datei-Upload</title> 
</head> 
<body> 
<?php 
if ($dateiupload_erfolgreich) 
{ 
?>Ihre Datei (&quot;<?php echo $dateiname; ?>&quot;) wurde hochgeladen. Sie können nun weitere Dateien hochladen.<?php 
} 
elseif (!empty($fehler)) 
{ 
    ?> 
    <br>Es sind folgende Fehler aufgetreten:<br> 
    <?php 
    foreach ($fehler as $fehlermeldung) { 
    echo $fehlermeldung.'<br>'; 
    } 
?>Beseitigen sie wenn möglich den Fehler und versuchen sie es erneut.<?php 
} 
?>  
<form action="upload.php" enctype="multipart/form-data" method="post">  
    <input type="file" size="65" name="datei">  
    <input type="submit" value="Hochladen" name="Send">  
</form>   
</body> 
</html>

6

Tuesday, November 7th 2006, 5:28pm

Was hast du denn da geaendert? (ich werds wenn ich daheim bin gleich ausprobieren und bericht erstatten^^..bin in der schule lol)

7

Wednesday, November 8th 2006, 1:35am

Achja.. du hast dem Button einen namen gegeben^^...
also, ich habe den script hochgeladen...
Diesmal passiert auch was andres..
aber da kommt die Meldung:


Notice: Undefined index: Datei in C:\Inetpub\vhosts\cyberwusl.de\httpdocs\upload.php on line 32

Is also anscheinend irgend ein Fehler in Zeile 32... das wär diese Zeile:

if ($dateiname_temp = CheckFile($_FILES['Datei']['tmp_name'],$_FILES['Datei']['error'],$_FILES['Datei']['size']))


Danke und liebe Grüße,

Alligator Jack

8

Wednesday, November 8th 2006, 9:02am

Datei ist unten klein geschrieben! xD
Du solltest immer darauf achten wie du die Variablen benennst das ist PHP nämlich nicht egal ;)

So müsste dat gehen :twisted:

HTML Code

1
2
3
4
<form action="upload.php" enctype="multipart/form-data" method="post"> 
    <input type="file" size="65" name="Datei"> 
    <input type="submit" value="Hochladen" name="Send"> 
</form>


DasBunny ^^

9

Thursday, November 9th 2006, 12:58am

Jop danke es geht!! :DD

Hab jetzt nur noch 2 kleine Probleme... dass ich eine Begrenzung habe...also dass ich nicht unendlich große dateien hochladen kann, weil sonst mein browser abbricht...

Aber dagegen kann man ja nichts tun.


Ein andres Problem wär..

Ich habe einen Script der einen Fortschrittstatus anzeigt... kann man den mit dem Uploadscript irgendwie zusammenfügen..bzw ist das schwer?
Ich weiss ja nicht wie ichs machen muss :S

Danke nochmal für deine Hilfe!

Alligator Jack

10

Thursday, November 9th 2006, 9:33am

du meinst vermutlich ein javascript, das du schon hast?

aber nein, mit php hausmitteln kriegst du das nicht hin
da müsstest du auf andere programmiersprachen wie perl zurückgreifen oder aber php mit bestimmten patches neukompilieren (stand 9.11. - ich weiß, dass php 5.2 das von haus können wird)

11

Thursday, November 9th 2006, 10:04am

Quoted from ""Alligator Jack""

Jop danke es geht!! :DD

Hab jetzt nur noch 2 kleine Probleme... dass ich eine Begrenzung habe...also dass ich nicht unendlich große dateien hochladen kann, weil sonst mein browser abbricht...


Guck mal nach was in der PHP Info steht unter PHP Core -> upload_max_filesize

Für PHPinfo PHP File mit folgendem Inhalt erstellen:

PHP Quellcode

1
2
3
<?php
phpinfo();
?>


Kannst die größe entweder in der Konfigurationsdatei vom Webserver änder (falls du darauf Zugriff hast) oder versuchen die Configuration mit einer .htaccess File zu überschreiben.

wcf.bbcode.htaccess.title

1
2
3
4
5
php_value upload_max_filesize "2M"
php_value post_max_size "2M"
php_value max_execution_time 1200
php_value max_input_time 1200
php_value memory_limit 2M

Similar threads

Social bookmarks