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

Wednesday, February 11th 2009, 12:43pm

Datei-Upload; wo landen die Dateien ?

Hallo,

ich habe hier ein Skript aus dem Internet und versuche gerade den zu verstehen.
Es geht darum Dateien auf einen Webserver zu speichern.

Nun habe ich das mit xammp und einer Beispieldatei getstet und es schient sogar zu funktionieren.
Ist jetzt nur die Frage wo ich den Pfad von dem Ordner einstelle indem die Dateuen hochgeladen werden sollen.
Ich poste euch mal die Config-und die Hauptdatei.

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$pfad   	= "/upload/up";                      		  # relative Pfad zu dem Ordner der hochgeladenen Dateien
$pfad2   	= "../up";                      		  	# Uploadordner immer mit ../ davor
$up_chmod   = 0755;                               		  # Chmodrechte das up Ordners 0755 oder 0777
$upmail  	= 0;  										  # eMail nach Upload ja = 1 / nein = 0
$email  	= "post@arne-home.de";  				  	# wenn eMail nach Upload ja, dann eMail an die Adresse
$dateien	= 5;								      	# Anzahl der Uploadfelder
$b_min		= 10;									 	  # minimale Bytes
$b_max		= 524288;								 	  # maximale Bytes / 1024 Bytes = 1 KB / 1024 KB = 1 MB
$pw     	= 1234;										  # Passwort
$upw		= 0;										  # Passwort ja = 1 / nein = 0
$inhalt		= 1;										  # Inhalt des Uploadornders anzeigen ja = 1 / nein = 0
$dl_link	= 0;										  # hochgeladene Dateien im up Ordner können verlinkt werden ja = 1 / nein = 0
$dl_endung  = 1;										  # bestimmte Dateiendungen zulassen ja = 1 / nein = 0
$filetypes	= array('jpg','gif','png');               	# Zugelassene Upload-Dateiformate
$dateien_w  = 0;										  # Dateien überschreiben ja = 1 / nein = 0
														  # Bei nein (0) wird ein Unixtimekürzel nach den Dateinamen angehängt.
$li_bild	= "pupf_03.png";                          	# Listenbild im Inhalt / weitere im Ordner /img
$progress   = "ladebalken.gif";                       	# Bild beim Hochladen / weitere im Ordner /img
$dl_gesamt  = 1;                                      	# Gesamtgrösse der Dateien anzeigen ja = 1 / nein = 0
$admin  	= 0;                                      	# Adminlink anzeigen ja = 1 / nein = 0
?>


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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
<?php
require('config.php');
$mb = $b_max/1048576;
$mb = round($mb, 2);
@chmod(''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod);
 
if($upw=="1"){
if(isset($_POST['sendfiles'])){
if($_POST['pwd'] != $pw){
	include("header.php");
	echo "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">
	<tr><td align=\"center\">
	<span class=\"grossschrift\">
	<b>Dateien hochladen</b>
	</span>
	</td></tr>
	<tr><td width=\"100%\" align=\"center\">
	<span class=\"grossschrift\">
	<br>
	Das Passwort fehlt oder ist falsch!<br>
	<br>
	<a href=\"index.php\" class=\"kleinlink\">&#171 zur&uuml;ck</a>
	<meta http-equiv=\"refresh\" content=\"10; URL=http://www.arne-home.de/\">
	<br><br>
	</td></tr>
	</table>";
	include("footer.php");
	exit;}
	}
}
 
if($_GET['action'] == 'inhalt') {
	include("header.php");
	echo "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">
	<tr><td align=\"center\">
	<span class=\"grossschrift\"><b>Inhalt des Uploadordners</b></span>
	</td></tr>
	<tr><td width=\"100%\" align=\"center\"><br>";
		$verz=opendir (''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.');
		while ($File = readdir ($verz)) {
		if($File != '.' && $File != '..') {
		echo "<table cellpadding=\"0\" cellspacing=\"0\" width=\"20%\"><tr><td align=\"left\">";
		if($dl_link==1){
			echo "<img width=\"11\" height=\"11\" src=\"./img/$li_bild\"><a href=\"$pfad/$File\" target=\"_blank\" class=\"grosslink\"> $File</a>";
			}
			else{
				echo "<span class=\"grossschrift\"><img width=\"11\" height=\"11\" src=\"./img/$li_bild\"> $File</span>";
				}
		echo "</td></tr></table>";}
	   	}
	   	if ($dl_gesamt==1) {
	   		function dir_size($dir, &$size, $recursive=TRUE){
			$handle = @opendir($dir);
			if(!$handle)
				return false;
				while ($file = @readdir ($handle)){
					if (eregi("^\.{1,2}$",$file)){
					continue;}
					if(!$recursive && $dir != $dir.$file."/"){
						if(is_dir($dir.$file))
						continue;}
							if(is_dir($dir.$file)){
							dir_size($dir.$file."/", $size, $recursive);}
							else{
								$size += filesize($dir.$file);}
						}
						@closedir($handle);
				}
				function sizeMath($size){
					if($size >= 1024000){
						$size = $size / 1024000;
						$size = sprintf("%01.2f", $size) . ' MB';
					}
					else{
						$size = $size / 1024;
						$size = sprintf("%01.1f", $size) . ' KB';
					}
				return $size;
				}
		$size = 0;
		dir_size(''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/', $size, TRUE);
		$sizeD = sizeMath($size);
		echo "<br><span class=\"kleinschrift\">Gesamtgr&ouml;sse der Dateien: ";
		echo $sizeD;
		if($admin==1) { echo "<br /><a href=\"./admin/index.php\" target=\"_blank\" class=\"kleinlink\">Admin</a>";}
		}
	echo "<br /><br /><a href=\"index.php\" class=\"kleinlink\">&#171 zur&uuml;ck</a><br /><br /></td></tr></table>";
	include("footer.php");
	exit;
}
 
include("header.php");
?>
<table width="100%" cellpadding="0" cellspacing="0">
<tr><td align="center">
<span class="grossschrift">
<b>Dateien hochladen</b>
</span>
</td></tr>
<tr><td width="100%" align="center">
<span class="grossschrift">
<br>
Die Datei darf nicht gr&ouml;&szlig;er als <?php echo "$mb"; ?> MB sein.<br>
<?php if($dl_endung==1){ echo"Zugelassene Dateiformate"; foreach ($filetypes as $value){echo " $value";}echo ".<br>";} ?>
Wieviele Dateien sollen hochgeladen werden?</span><br>
<br>
<?php if($inhalt==1){ echo "<a href=\"index.php?action=inhalt\" class=\"grosslink\"><b>Inhalt des Uploadordners</b></a><br>";} ?>
<br>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<select name="numfiles" class="select">
<?php
for ($i=1; $i<=$dateien; $i++) {
echo ("<option value=$i>$i");
}
?>
</select>
<input type="Submit" value="Anzahl festlegen" name="up" class="button">
<br><br>
</form>
<div id="wait" style="display: none;"><img src="./img/<?echo $progress; ?>"></div>
<form method="post" action="<?echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" onsubmit="return window.setTimeout(function() { document.getElementById('wait').style.display = 'block'; }, 1000);">
<?php
if (isset($_POST['up'])){
	echo '<span class="grossschrift"><b>'.$numfiles.'</b> ';
	echo $_POST['numfiles'] == '1' ? 'Datei kann' : 'Dateien k&ouml;nnen';
	echo ' hochgeladen werden.</span><br />';
	for ($i=1; $i<=$_POST['numfiles']; $i++){
		echo "<br /><input type=\"File\" name=\"myfile$i\" class=\"input\">";}
		if($upw==1){echo'<br /><br /><span class="grossschrift">Passwort</span> <input type="password" name="pwd" class="input" style="width:40px;">';}
		echo '<br /><input type="Submit" name="sendfiles" value="hochladen" class="button"><br /><br/>';}
if (isset($_POST['sendfiles'])){
	$numsendfiles = count($_FILES);
	foreach($_FILES as $strFieldName => $arrPostFiles){
	$arrPostFiles=preg_replace( array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/","/ /"),array("ae","oe","ue","Ae","Oe","Ue","ss","_"), $arrPostFiles);
	if ($arrPostFiles['size'] > $b_min && $arrPostFiles['size'] < $b_max){
   			$strFileName = $arrPostFiles['name'];
			$strFileTemp = $arrPostFiles['tmp_name'];
			if ($dl_endung==0) {
				@copy ($strFileTemp, "$_SERVER[DOCUMENT_ROOT]/$pfad/$strFileName");
				echo "<span class=\"grossschrift\"><font color=green><b>Datei $strFileName erfolgreich  hochgeladen.</b></font></span><br><br>";
				if ($upmail==1 && $numsendfiles != 0) {
					$ip = $_SERVER["REMOTE_ADDR"];
					$subject = "Upload auf Homepage";
					$body .= "Datum: ".date("d.m.Y, H:i:s")." Uhr\n";
					$body .= "IP: $ip\n";
					$body .= "$numsendfiles Datei(en) wurden hochgeladen\n";
					$body .= "Domain: http://$_SERVER[HTTP_HOST]$_SERVER[SCRIPT_NAME]\n\n";
					@mail($email, $subject, $body, "From: $email");
					}
			}
			elseif($dl_endung==1) {
				$pfad_info = pathinfo($strFileName);
				$extension = strtolower($pfad_info["extension"]);
				if (in_array($extension,$filetypes)) {
					if ($dateien_w  == 0) {
            		$unixtime = time();
					$strFileNameComponents = explode(".",$arrPostFiles['name']);
                	$strFileName = "$strFileNameComponents[0]-$unixtime.".$strFileNameComponents[1];}
					@copy ($strFileTemp, "$_SERVER[DOCUMENT_ROOT]/$pfad/$strFileName");
					echo "<span class=\"grossschrift\"><font color=green><b>Datei $strFileName erfolgreich  hochgeladen.</b></font></span><br><br>";
					if ($upmail==1 && $numsendfiles != 0) {
						$ip = $_SERVER["REMOTE_ADDR"];
						$subject = "Upload auf Homepage";
						$body .= "Datum: ".date("d.m.Y, H:i:s")." Uhr\n";
						$body .= "IP: $ip\n";
						$body .= "$numsendfiles Datei(en) wurden hochgeladen\n";
						$body .= "Domain: http://$_SERVER[HTTP_HOST]$_SERVER[SCRIPT_NAME]\n\n";
						@mail($email, $subject, $body, "From: $email");
						}
			}
			else {
				echo "<span class=\"grossschrift\"><font color=red><b>Unerlaubtes Dateiformat!</span><br><br>";}
			}
		}
	   	else {
	   		echo "<span class=\"grossschrift\"><font color=red><b>Die Datei mu&szlig; gr&ouml;&szlig;er als $b_min Bytes und kleiner als $mb MB sein!</b></font></span><br><br>";}
	}
}
?>
</form>
</td></tr>
</table>
<?php include("footer.php");?>


Ich hoffe das wird jetzt nicht zu unübersichtlich.

Naja jedenfalls dachte ich zuerst das die Daten in dem Ordner: "up" landen, tut meine Beispieldatei aber nicht.
Und nun vermute ich das diese Zeile was damit zu tun hat: @chmod(''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod);
Aber wo genau muss ich jetzt den Pfad zum Ordner eingeben ?

Danke schonmal

2

Wednesday, February 11th 2009, 1:12pm

ähm

PHP Quellcode

1
2
$pfad   	= "/upload/up";                      		  # relative Pfad zu dem Ordner der hochgeladenen Dateien
$pfad2   	= "../up";                      		  	# Uploadordner immer mit ../ davor



Entweder kannst du nicht lesen oder ich habe deine Frage falsch verstanden

3

Wednesday, February 11th 2009, 1:16pm

also du hast mich schon richtig verstanden....aber egal was ich da für ein Pfad hinschreibe....oder welchen Ordner...es kommt einfach nichts da an...
Kann es vielleciht sein das es mit Xammp nicht geht und ich es auf einen richtigen webserver testen muss ?

4

Wednesday, February 11th 2009, 1:19pm

also du hast mich schon richtig verstanden....aber egal was ich da für ein Pfad hinschreibe....oder welchen Ordner...es kommt einfach nichts da an...
Kann es vielleciht sein das es mit Xammp nicht geht und ich es auf einen richtigen webserver testen muss ?


Sollte kein Problem mit xampp sein.

5

Wednesday, February 11th 2009, 1:31pm

Jetzt kommen wir der Sache schon ein bischen näher.

Was mich wundert ist, dass du sagst, dass es eigentlich funktioniert. Zumindestens glaubst du es.
Kannst du die Aussage konkretisieren?

Geht es mit dem Standardpfad oder geht es nicht?


Ansonsten:
Nimm mal das @ aus den folgenden Zeilen raus und schau dir die Fehlermeldung an:

PHP Quellcode

1
2
@copy ($strFileTemp, "$_SERVER[DOCUMENT_ROOT]/$pfad/$strFileName");
@chmod(''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod);

6

Wednesday, February 11th 2009, 1:33pm

bei dem Beospiel klappt das mit dem hochladen der Datei zum Beispiel warum auch immer..

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
<html>
<head> <title>Upload Script by Torben Brodt</title> </head>
<body>
 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<input type="file" name="datei" />
<input type="submit" value="Datei hochladen" />
</form>
 
<?php
function make_filename()
{
	$end = substr($_FILES['datei']['name'], -3);
	$i=1;
	while(is_file($i.'.'.$end))
	{
	        $i++;
	}
	return $i.'.'.$end;
} 
 
if (isset($_FILES['datei']) and ! $_FILES['datei']['error'])
{
    $filename = $_FILES['datei']['name'];
    $new = make_filename();
    move_uploaded_file($_FILES['datei']['tmp_name'], $new);
 
    echo "<b>Status:</b> Upload komplett<br />".$new;
 
} else {
 
    echo "<b>Status:</b> Fehler beim Upload";
 
}
?>
 
</body>
</html>

7

Wednesday, February 11th 2009, 1:43pm

Ahh okay...nun sagt er, dass es das Verzeichnis garnicht gibt.


PHP Quellcode

1
Warning: chmod() [function.chmod]: No such file or directory in C:\xampp\htdocs\tutorial\uploadv1.2\index.php on line 5


In den Ordner soll das ja alles auch rein: C:\xampp\htdocs\tutorial\uploadv1.2\up

Aber so wie ich die Fehlermeldung interpretiere versucht er einen Ordner IN der index.php zu finden ??

Danke für deine Mühe

8

Wednesday, February 11th 2009, 1:48pm


Aber so wie ich die Fehlermeldung interpretiere versucht er einen Ordner IN der index.php zu finden ??


hehe ... ich denke mal, dass das nicht dein erster Fehler sein wird. Schau mal in der Datei, in der angegebenen Zeile nach, dann ist deine Frage beantwortet ;)


Schau dir doch einfach den Pfad an.

PHP Quellcode

1
2
echo $_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod;
//@chmod(''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod);

9

Wednesday, February 11th 2009, 2:01pm

ahhh...cool..Danke nun klappts auch....hehe nun würde mich ja mal interessieren wo der den Pfad her hat ?!?!

PHP Quellcode

1
C:/xampp/htdocs//uploadv1.2/up/.511
und wieso macht er da .511 hinter ?

uiui und dafür hab ich jetzt den ganzen Tag gebraucht....

10

Wednesday, February 11th 2009, 2:07pm

ahh...da steht ja $_SERVER[DOCUMENT_ROOT] also ins Wurzelverzeichnis vom Server, und da ich XAmmp habe ist es der htdocs Ordner :D

11

Wednesday, February 11th 2009, 2:11pm

Edit:
Ein Licht ist aufgegangen ;)
Steht doch da --> $_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod



Naja, wer auch immer das Plugin geschrieben hat es ist gruselig.

Abgesehen davon, dass man bei einem Uploadscript es einfach missachtet ob der ja so unwichtige chmod richtig gesetzt wird

PHP Quellcode

1
@chmod(''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod);


ist das hier noch viel (Dafür gibt es kein Wort .....)

PHP Quellcode

1
2
@copy ($strFileTemp, "$_SERVER[DOCUMENT_ROOT]/$pfad/$strFileName");
echo "<span class=\"grossschrift\"><font color=green><b>Datei $strFileName erfolgreich  hochgeladen.</b></font></span><br><br>";



Naja, guck dir davon nichts ab. Ich hoffe das Plugin war mit "Alpha" gekennzeichnet.

12

Friday, February 13th 2009, 1:20pm

mehrere Dateien gleichzeitig hochladen auf eine extra Unterseite

Hey Ho,

ich hab mir jetzt im Code überall mal Kommentare gemacht. Und nun würd ich gern herausfinden wie ich die Funktion, dass man gleich mehrer Dateien hochladen kann, auf eine Extra Seite bringt...Also müsste man den Teil abschneiden und eine eigene Datei draus machen....was allerdings überhaupt nicht klappt...

Wenn ich den Button: "Anzahl festlegen" lösche wird das "Dateiauswahl-Feld" garnicht erst angezeigt - ich würde das gerne so hinbekommen, dass man direkt auf der Hauptseite das "Dateiauswahl-Feld" sieht und man optioal auf einer Unterseite dann mehrere Dateien gleichzeitig hochladen kann.

Ich hoffe ihr versteht wie ich das meine.

Danke schonmal :)

Ps. ich häng nochmal die index.php ran

Der Bereich den ich meine ist von Zeile 153 - ca. 173

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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
<?php
require('config.php');              # die Datei Config.php wird als erstes ausgeführt
$mb = $b_max/1048576;
$mb = round($mb, 2);
@chmod(''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod); #im Rootverzeichnis des Servers gucken !!!
#echo $_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.', $up_chmod;   #<-- Bei der Zeile die Raute wegnehmen um zu sehen wo er die Datei hinspeichern will
 
 
/*
Passwortabfrage
 
if($upw=="1"){
if(isset($_POST['sendfiles'])){
if($_POST['pwd'] != $pw){
	include("header.php");
	echo "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">
	<tr><td align=\"center\">
	<span class=\"grossschrift\">
	<b>Dateien hochladen</b>
	</span>
	</td></tr>
	<tr><td width=\"100%\" align=\"center\">
	<span class=\"grossschrift\">
	<br>
	Das Passwort fehlt oder ist falsch!<br>
	<br>
	<a href=\"index.php\" class=\"kleinlink\">&#171 zur&uuml;ck</a>
	<br><br>
	</td></tr>
	</table>";
	exit;}
	}
}
*/
 
 
if($_GET['action'] == 'inhalt') 
{
	include("header.php");
	echo "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">
	<tr><td align=\"center\">
	    <span class=\"grossschrift\"><b>Inhalt des Uploadordners</b></span>
	</td></tr>
	<tr><td width=\"100%\" align=\"center\"><br>";
		$verz=opendir (''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/.');
		while ($File = readdir ($verz)) 
    {
		  if($File != '.' && $File != '..') 
      {
		echo "<table cellpadding=\"0\" cellspacing=\"0\" width=\"20%\"><tr><td align=\"left\">";
		if($dl_link==1)
      {
			 echo "<img width=\"11\" height=\"11\" src=\"./img/$li_bild\"><a href=\"$pfad/$File\" target=\"_blank\" class=\"grosslink\"> $File</a>";
		  }
			else
        {
				echo "<span class=\"grossschrift\"><img width=\"11\" height=\"11\" src=\"./img/$li_bild\"> $File</span>";
				}
		echo "</td></tr></table>";
      }
	  }
       # Gesamtgrösse der Dateien anzeigen ja = 1 / nein = 0
       if ($dl_gesamt==1) 
       {
	   		function dir_size($dir, &$size, $recursive=TRUE)
    {
			$handle = @opendir($dir);
			if(!$handle)
				return false;
				while ($file = @readdir ($handle))
 
        {
					if (eregi("^\.{1,2}$",$file))
          {
					continue;
          }
					if(!$recursive && $dir != $dir.$file."/")
            {
						if(is_dir($dir.$file))
						continue;
            }
							if(is_dir($dir.$file))
              {
							dir_size($dir.$file."/", $size, $recursive);
              }
							else
              {
								$size += filesize($dir.$file);
              }
				}
						@closedir($handle);
		}
				function sizeMath($size)
        {
					if($size >= 1024000)
          {
						$size = $size / 1024000;
						$size = sprintf("%01.2f", $size) . ' MB';
					}
					else
          {
						$size = $size / 1024;
						$size = sprintf("%01.1f", $size) . ' KB';
					}
				return $size;
				}
		$size = 0;
		dir_size(''.$_SERVER[DOCUMENT_ROOT].'/'.$pfad.'/', $size, TRUE);
		$sizeD = sizeMath($size);
		echo "<br><span class=\"kleinschrift\">Gesamtgr&ouml;sse der Dateien: ";
		echo $sizeD;
 
		 # Adminlink anzeigen ja = 1 / nein = 0
    # if($admin==1) { echo "<br /><a href=\"./admin/index.php\" target=\"_blank\" class=\"kleinlink\">Admin</a>";}
}
	 # echo "<br /><br /><a href=\"index.php\" class=\"kleinlink\">&#171 zur&uuml;ck</a><br /><br /></td></tr></table>";
	 # exit;
}
 
include("header.php");
?>
<table width="100%" cellpadding="0" cellspacing="0">
<tr><td align="center">
<span class="grossschrift">
 
<!--1. Zeile auf der Seite-->
 
<b>Dateien hochladen</b>
 
</span>
</td></tr>
<tr><td width="100%" align="center">
 
<span class="grossschrift">
<br>
 
Die Datei darf nicht gr&ouml;&szlig;er als <?php echo "$mb"; ?> MB sein.<br>
 
<?php if($dl_endung==1){ echo"Zugelassene Dateiformate"; foreach ($filetypes as $value){echo " $value";}echo ".<br>";} ?>
 
 
 
 
<!--Wieviele Dateien sollen hochgeladen werden?</span><br>-->
<br>
 
 
<?php if($inhalt==1){ echo "<a href=\"index.php?action=inhalt\" class=\"grosslink\"><b>Inhalt des Uploadordners</b></a><br>";} ?> 
 
<br>
 
<!-- hier ist das festgelegt was der Anzahl festlegeButton machen soll-->
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
 
<!--wenn der Bereich bis zum /select gelöscht wird ist das Nummernfeld ganz weg- bringt aber nichts weil dann der Anzahl festlegenButton nichts macht-->
<select name="numfiles" class="select">
<?php
 
for ($i=1; $i<=$dateien; $i++) 
  {
    #hier entstehen die Zahlen in dem kleinen NUmmernkästchen bei der Auswahl der Upload`s 
    echo ("<option value=$i>$i");
  }
 
?>
 
</select>
<!--ANzahl festlegen button--> 
<input type="Submit" value="Anzahl festlegen" name="up" class="button">
<br><br>
</form>
 
<!--Wenn man die folgenden beiden Zeilen löscht passiert nichts wenn man auf den Sende-Button klickt ! -->
<div id="wait" style="display: none;"><img src="./img/<?echo $progress; ?>"></div>
<form method="post" action="<?echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" onsubmit="return window.setTimeout(function() { document.getElementById('wait').style.display = 'block'; }, 1000);">
<?php
 
#if (isset($_POST['up']))
  {
#	 echo '<span class="grossschrift"><b>'.$numfiles.'</b> ';
	# echo $_POST['numfiles'] == '1' ? 'Datei kann' : 'Dateien k&ouml;nnen';
	 #echo ' hochgeladen werden.</span><br />';
	 for ($i=1; $i<=$_POST['numfiles']; $i++)
    {
		echo "<br /><input type=\"File\" name=\"myfile$i\" class=\"input\">";
    }
 
	# Hat nichts mit PW zu tun...Hier wird der Senden-Button erstellt
   if($upw==1){echo'<br /><br /><span class="grossschrift">Passwort</span> <input type="password" name="pwd" class="input" style="width:40px;">';
   }
		echo '<br /><input type="Submit" name="sendfiles" value="Senden" class="button"><br /><br/>';
  }
 
 
# Umlaute umgewandelt 
if (isset($_POST['sendfiles']))
{
	$numsendfiles = count($_FILES);
	foreach($_FILES as $strFieldName => $arrPostFiles)
 
  {
	$arrPostFiles=preg_replace( array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/","/ /"),array("ae","oe","ue","Ae","Oe","Ue","ss","_"), $arrPostFiles);
 
    if ($arrPostFiles['size'] > $b_min && $arrPostFiles['size'] < $b_max)
    {
   			$strFileName = $arrPostFiles['name'];
			$strFileTemp = $arrPostFiles['tmp_name'];
 
    # bestimmte Dateiendungen zulassen ja = 1 / nein = 0
			if ($dl_endung==0) 
      {
 
        @copy ($strFileTemp, "$_SERVER[DOCUMENT_ROOT]/$pfad/$strFileName");
				echo "<span class=\"grossschrift\"><font color=green><b>Datei $strFileName erfolgreich  hochgeladen.</b></font></span><br><br>";
 
        # eMail nach Upload wenn dl_endung = 0 ja = 1 / nein = 0
        if ($upmail==1 && $numsendfiles != 0) 
        {
					$ip = $_SERVER["REMOTE_ADDR"];
					$subject = "Upload auf Homepage";
					$body .= "Datum: ".date("d.m.Y, H:i:s")." Uhr\n";
					$body .= "IP: $ip\n";
					$body .= "$numsendfiles Datei(en) wurden hochgeladen\n";
					$body .= "Domain: http://$_SERVER[HTTP_HOST]$_SERVER[SCRIPT_NAME]\n\n";
					@mail($email, $subject, $body, "From: $email");
				}
			}
 
			# bestimmte Dateiendungen zulassen ja = 1 / nein = 0
			elseif($dl_endung==1) 
      {
				$pfad_info = pathinfo($strFileName);
				$extension = strtolower($pfad_info["extension"]);
				if (in_array($extension,$filetypes)) 
        {
				    if ($dateien_w  == 0) 
            {
                	$unixtime = time();
				    $strFileNameComponents = explode(".",$arrPostFiles['name']);
                    $strFileName = "$strFileNameComponents[0]-$unixtime.".$strFileNameComponents[1];
            }
					@copy ($strFileTemp, "$_SERVER[DOCUMENT_ROOT]/$pfad/$strFileName");
					echo "<span class=\"grossschrift\"><font color=green><b>Datei $strFileName erfolgreich  hochgeladen.</b></font></span><br><br>";
 
          # eMail nach Upload wenn dl_endung = 1 ja = 1 / nein = 0
        	if ($upmail==1 && $numsendfiles != 0) 
          {
						$ip = $_SERVER["REMOTE_ADDR"];
						$subject = "Upload auf Homepage";
						$body .= "Datum: ".date("d.m.Y, H:i:s")." Uhr\n";
						$body .= "IP: $ip\n";
						$body .= "$numsendfiles Datei(en) wurden hochgeladen\n";
						$body .= "Domain: http://$_SERVER[HTTP_HOST]$_SERVER[SCRIPT_NAME]\n\n";
						@mail($email, $subject, $body, "From: $email");
					}
			   }
			else
        {
				    echo "<span class=\"grossschrift\"><font color=red><b>Unerlaubtes Dateiformat!</span><br><br>";
        }
			}
		}
	   	else {
	   		echo "<span class=\"grossschrift\"><font color=red><b>Die Datei mu&szlig; gr&ouml;&szlig;er als $b_min Bytes und kleiner als $mb MB sein!</b></font></span><br><br>";}
	}
}
?>
</form>
</td></tr>
</table>

13

Friday, February 13th 2009, 7:00pm

Willst du es auf mehrere Seiten verteilen müsstest du auch die Authentifizierungs-vorkehrungen konsequent weiterziehen.

Der Code ist im Moment ein ziemliches Chaos.
Ich würde dir empfehlen dir die Zeit zu nehmen, ein paar Funktionen für Authentifizierung und Upload zu nutzen und dadurch konsequent aufzuräumen. Dabei lernst du bestimmt auch was.

14

Monday, February 16th 2009, 2:09pm

hi,

habs geschafft.....hab einfach Die for-Schleife in der "$_POST['numfiles']" durchlaufen wird auskommentiert und nur den Inhalt stehen gelassen. Und in dem was jetzt übrig ist "$i" durch "1" ersetzt.
naja das der Code unübersichtlich ist, kann ich noch nicht so recht beurteilen hab noch nich so viele andere Skripte gesehen....dabei habe ich schon so viel an unnötiges Zeug`s gelöscht.

mal sehen wie weit ich nun komme :)

This post has been edited 1 times, last edit by "Benny1452" (Feb 16th 2009, 2:21pm)


15

Wednesday, March 4th 2009, 2:33pm

"speichern unter.. " Feld; header Funktion ??

hi,

also meine Seite funktioniert jetzt soweit eigentlich ganz gut.

Nur wenn man was hochlädt und dann auf den Downloadlink klickt passiert folgendes:

- bei mp3 Dateien spielt er die im Browser mit dem quick time Player ab
- bei Bilddateien zeigt er die bloß im Browser an
- genau wie bei pdf Dateien.

Ich möchte ja, dass ein Downloadfenster kommt indem man auswählen kann: öffnen oder speichern unter...

Soo...herausgefunden habe ich bereits, dass das mit der header Funktion geht.
Ein Beispiel habe ich auch gefunden:

Source code

1
2
3
4
5
6
7
8
9
10
1  $file = '/pfad/zu/einer/datei.zip';
2  // Dateityp
3  header( 'Content-type: application/octet-stream' );
4  // Groesse der Datei
5  header( 'Content-Length: ' . filesize( $file ) );
6  // Dateiname
7  $dateiname = basename( $file );
8  header( 'Content-Disposition: attachment; filename="' . $dateiname . '"' );
9  // Ausgeben der Datei
10 readfile( $file );


Aber nun hab ich gelesen das ich das ja in eine eigene Seite machen muss, weil vor dem "<?php" kein Leerzeichen oder sonst was stehen darf....sonst gehts nicht. und wenn ich das auf die index.php nach ganz oben schriebe will er die speichern -.-

Muss ich, wenn ich dieses Beispiel benutze noch was anpassen ausser den Pfad zur Datei ? ...Und selbst wie ich das machen soll weiß ich nicht weil ich ja nicht den Dateinamen von den Dateien die die Benutzer hochladen vorher wissen kann :(

ich bin echt für jeden Tipp dankbar

mfg Benny

This post has been edited 1 times, last edit by "Benny1452" (Mar 4th 2009, 4:08pm)


16

Wednesday, March 4th 2009, 10:18pm

RE: "speichern unter.. " Feld; header Funktion ??

hi,
Und selbst wie ich das machen soll weiß ich nicht weil ich ja nicht den Dateinamen von den Dateien die die Benutzer hochladen vorher wissen kann :(


Weshalb vorher? Man kann doch keine Datei runterladen bevor sie hochgeladen ist.. Also hast du den Dateinamen.
Du verschickst den Download Link per Mail?

Eigentlich sollte das simpel sein. Den Dateinamen der Datei wenn du sie hochlädst, kannst du ja ermitteln.
An die php Datei mit dem veränderten header hängst du per GET den Dateinamen dran.

PHP Quellcode

1
$dateiname= $_FILES['inputfeldname']['name'];

HTML Code

1
<a href="downloaddatei.php?dname=<? echo $dateiname;?>">Downloadlink</a>


Dann:

PHP Quellcode

1
2
3
4
5
6
7
8
$name=$_GET['dname'];
 
  $file = '/pfad/".$name."'';
  header( 'Content-type: application/octet-stream' );
  header( 'Content-Length: ' . filesize( $file ) );
  $dateiname = basename( $file );
  header( 'Content-Disposition: attachment; filename="' . $dateiname . '"' );
  readfile( $file );


Sollte so ohne Probleme funktionieren. Wenn ich dein Problem richtig verstanden habe

17

Saturday, March 7th 2009, 3:02am

PHP Quellcode

1
2
$pfad   	= "/upload/up";                      		  # relative Pfad zu dem Ordner der hochgeladenen Dateien
$pfad2   	= "../up";                      		  	# Uploadordner immer mit ../ davor

mir ist bewusst dass das Problem schon gelöst wurde, aber dürfen Pfads mit / anfangen?

man muss doch ordner angeben, in welches er wechseln soll

oder raus-rein technik :D ../

oder liege ich da falsch?

18

Saturday, March 7th 2009, 11:13am

aber dürfen Pfads mit / anfangen?
man muss doch ordner angeben, in welches er wechseln soll


Anders als im Code Kommentar angegeben handelt es sich nicht um einen relativen, sondern um einen absoluten Pfad.
Beginnt der Pfad mit einem "/", dann ist damit das Wurzelverzeichnis gemeint.

Bei einem typischen Shared Hosting Paket würde dein Skript vermutlich unter /var/www/kunde10/domain500/web/index.php liegen
Wenn dein Upload Verzeichnis nun unter dem absoluten Pfad /var/www/kunde10/domain500/web/upload liegt, kannst du diesen Pfad natürlich auf diese Art direkt angeben oder einfach einen relativen Pfad verwenden: "upload"

Es ist ziemlich unwahrscheinlich dass der absolute Pfad /upload bei einem vernünftig konfigurierten Webserver verwendet wird - vor allem nicht bei Shared Hosting

19

Sunday, March 8th 2009, 4:14pm

oke ^^

20

Monday, March 9th 2009, 3:14pm

hi,

danke für die vielen guten Antworten :)

nachdem ich mir das jetzt ein paar Tage angeguckt habe verstehe ich die Antwort von Snowflake noch nicht so richtig...
Die ersten beiden Codes kommen in meine download.php oder ?
Also diese hier :

PHP Quellcode

1
$dateiname= $_FILES['inputfeldname']['name']      // und $_FILES soll ein Array sein ?

und

PHP Quellcode

1
<a href="downloaddatei.php?dname=<? echo $dateiname;?>">Downloadlink</a>    // Wenn das hier: "?dname="  der Datename ist.warum ist denn danach nochmal die Variable von dem Dateinamen ?

Aber wenn ich auf den Downloadlink klicke müsste ich ja zu ungefähr so einer seite kommen: http://domain.org/upload/Dateiname.jpg
Genau auf dieser Seite muss doch dann der folgende Code ausgeführt werden....aber wie ?

PHP Quellcode

1
2
3
4
5
6
7
8
$name=$_GET['dname'];
 
  $file = '/pfad/".$name."'';
  header( 'Content-type: application/octet-stream' );
  header( 'Content-Length: ' . filesize( $file ) );
  $dateiname = basename( $file );
  header( 'Content-Disposition: attachment; filename="' . $dateiname . '"' );
  readfile( $file );


Sorry für die vielen Anfängerfragen...

MFG Benny

This post has been edited 2 times, last edit by "Benny1452" (Mar 9th 2009, 3:48pm)


Similar threads

Social bookmarks