Problem mit max_file_size
SGD-Daniel
- php
Hallo,
mein Problem ist, dass wenn ich Bilder, z.B. 4 Stück in Summe mehr als 200 KB hochladen will, dass dann alle nicht hochgeladen werden, obwohl alle im Limit sind. Bekomme dann immer den Else-Zweig als Ergebnis!
Wie muss es richtig lauten?
[php]
echo '<form enctype="multipart/form-data" action="index.php?action=bilderupload" method="post">';
for($i=1;$i<=$_POST[bilder];$i++)
{
echo '<input name="userfile'.$i.'" type="file" size=60><br><br>';
echo '<input name="anzahl" type="hidden" value="'.$_POST[bilder].'">';
echo '<input name="ordner" type="hidden" value="'.$_POST[ordner].'">';
echo '<input type="hidden" name="MAX_FILE_SIZE" value="200000">';
}
echo 'Bitte darauf achten, das kein Bild größer als 200 KB groß ist!<br><br>';
echo '<input type="submit" name="action" value="Bilder hochladen"></form>';
-------------------------------
foreach($_FILES as $value)
{
if($value[name]<=$_POST[MAX_FILE_SIZE])
{
$uploaddir = '/var/www/vhosts/domain.de/httpdocs/bilder/'.$datum.$_POST[ordner].'/'.$value[name];
move_uploaded_file($value["tmp_name"], $uploaddir);
echo 'Bild '.$value[name].' erfolgreich hochgeladen.<br>';
}
else echo '<font color="#FF0000">Bild '.$value[name].' ist zu groß und wurde nicht hochgeladen!</font><br>';
}
[/php]
Hello,
abgesehen davon, dass da nocb viele Denk- und Sicherheitslücken drin sind im Script...
foreach($_FILES as $value)
{if($value[name]<=$_POST[MAX_FILE_SIZE])
{
wenn der Name des Files kleiner ist, als irgendein vermutlich numerischer Wert, der zudem noch nicht mal gefunden wird, wenn die Konstante am Server bekannt sein sollte...
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Das wird doch durch das method=post übermittelt!
Danke, aber trotzdem ist mein Anliegen ein anderes! :-)
Hello,
abgesehen davon, dass da nocb viele Denk- und Sicherheitslücken drin sind im Script...
foreach($_FILES as $value)
{if($value[name]<=$_POST[MAX_FILE_SIZE])
{wenn der Name des Files kleiner ist, als irgendein vermutlich numerischer Wert, der zudem noch nicht mal gefunden wird, wenn die Konstante am Server bekannt sein sollte...
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hello,
foreach($_FILES as $value)
{if($value[name]<=$_POST[MAX_FILE_SIZE])
{wenn der Name des Files kleiner ist, als irgendein vermutlich numerischer Wert, der zudem noch nicht mal gefunden wird, wenn die Konstante am Server bekannt sein sollte...
Das wird doch durch das method=post übermittelt!
Was wird "durch das method=post übermittelt"?
Danke, aber trotzdem ist mein Anliegen ein anderes! :-)
War Dein Anliegen denn nicht, den Fehler im Script zu finden, der für die fortwährende Nutzung des Else-Zweiges verantwortlich ist?
Ich habe Dich hier gerade sogar auf zwei Fehler aufmerksam gemacht. Einer ist garantiert dafür zuständig und der andere kann ebenfalls zuständig werden...
Denk nochmal ein Bisschen nach.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Geh mal zu meinem ersten Eintrag und schau mal, was über den Strichen steht. Da ist ein input! ;)
Hello,
foreach($_FILES as $value)
{if($value[name]<=$_POST[MAX_FILE_SIZE])
{wenn der Name des Files kleiner ist, als irgendein vermutlich numerischer Wert, der zudem noch nicht mal gefunden wird, wenn die Konstante am Server bekannt sein sollte...
Das wird doch durch das method=post übermittelt!
Was wird "durch das method=post übermittelt"?
Danke, aber trotzdem ist mein Anliegen ein anderes! :-)
War Dein Anliegen denn nicht, den Fehler im Script zu finden, der für die fortwährende Nutzung des Else-Zweiges verantwortlich ist?
Ich habe Dich hier gerade sogar auf zwei Fehler aufmerksam gemacht. Einer ist garantiert dafür zuständig und der andere kann ebenfalls zuständig werden...
Denk nochmal ein Bisschen nach.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.deTom
Hello Daniel,
Geh mal zu meinem ersten Eintrag und schau mal, was über den Strichen steht. Da ist ein input! ;)
Ja und? Was soll mir das sagen?
Im Verarbeitungsscript ist der Zugriff auf diesen Post-Parameter trotzdem falsch.
Außerdem:
Würdest Du bitte beim Posten die Regeln dieses Forums einhalten?
Es ist nicht erwünscht, Fullquotes durchzuführen. Bitte lösche alle für die jeweilige Antwort irrelevanen Passagen heraus.
Außerdem ist es hier üblich, dass man sich begrüßt und auch eine Abschlussformel hinterlässt.
Und dann führt Beratungsresistenz nicht zum Ziel. Außerdem ist da mein Privileg! ;-)
Hast Du denn jetzt über die von mir gegebenen Tipps nachgedacht? Den einen scheinst Du nicht verstanden zu haben. Auf den anderen hast Du noch gar nicht reagiert.
Soviel zum einen: Es ist eine potentielle Fehlerquelle, in der von Dir vorgenommenen Art auf eine Postvariable zuzugreifen. Wenn nun jemand auf die Idee kommt, in dEinem Script ein Define() für die Konstante MAX_FILE_SIZE durchzuführen, geht dieser Zugriff ann wahrscheinlich krachen.
$_POST['MAX_FILE_SIZE']
wäre an dieser Stelle richtig. Bezeichner von Arraylementen sollten immer in Häkchen gesetzt werden, es sei denn, sie sind numerische Indexe $_POST[3] oder eben wirklich definierte Konstanten.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hallo,
erstmal Entschuldigung wegen das nichteinhalten der Regeln.
Zum Thema zurück:
Ich kann mit deinen Hinweisen nichts anfangen, weil diese Hinweise nicht mein Problem sind.
Lade ich eine Datei hoch, mit bis zu 200 kb, werden Bilder hochgeladen. Auch bei 2 Dateien, sind sie in der Summe zusammen unter 200 kb.
Sind diese beiden Dateien in der Summe aber über 200 kb, werden sie nicht hochgeladen, weil ich dann im Else-Zweig lande. Daher müsste $_POST['FILE_MAX_SIZE'] genau so definiert werden, wie $_POST['userfile'] mit der for-schleife im input. Dies regelt ja dann das foreach. Aber dieses $_POST['FILE_MAX_SIZE'] kann ich ja dann nicht nochmal im foreach machen!?
Grüße
Daniel
Hello,
Ich kann mit deinen Hinweisen nichts anfangen, weil diese Hinweise nicht mein Problem sind.
Deutscher geht es aber nicht, oder in welcher Sprache möchtest Du die Übersetzung Deines Codes haben?
if($value[name]<=$_POST[MAX_FILE_SIZE])
{
wenn der Name des Files kleiner ist, als irgendein vermutlich numerischer Wert, der zudem noch nicht mal gefunden wird, wenn die Konstante am Server bekannt sein sollte...
Ich korrigiere mal den einen Fehler, der ja wahrscheinlich noch keine Auswirkungen hatte und lese Dir den anderen _nochmal_ auf Deutsch vor:
if($value[name]<=$_POST['MAX_FILE_SIZE'])
{
wenn der Name des Files (sofern die Konstante 'name' nicht existiert) kleiner ist, als die gepostete MAX_FILE_SIZE
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hi SGD,
$value["tmp_name"]
-> Richtig
$value[name]
$_POST[MAX_FILE_SIZE]
$_POST[ordner]
-> Falsch
Aufgabe: Finde den Unterschied zwischen Richtig und Falsch ;-)
Oder führe dir folgendes zu Gemüte: Strings, Arrays und Konstanten in PHP.
Viele Grüße,
~ Dennis.