• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP Upload Limit festlegen - ohne php.ini

zefug

Neues Mitglied
Hallo,

ich arbeite gerade an meiner Joomla Seite, und stehe gerade vor einem Problem. In einer meiner Seiten ist ein Uploader integriert. Das Problem ist, dass es kein Limit für die Maximale Größe sowie das Dateiformat gibt. Ich möchte gerne ein Limit auf 10 MB setzen, und nur Musikformate .mp3 und .ogg beschränken. Beherrsche aber PHP garnicht (wie gesagt, benutzt Joomla...). Es handelt sich also um eine einmalige Sache.

Nach etwas Google bin ich drauf gestoßen, dass man eine php.ini hochladen kann, in der man das einstellen kann. Doch dann würde es für die komplette Seite gültig sein. Dass soll nicht so sein, sondern nur für diesen einen Upload.

Ich habe mal einen Ausschnitt der PHP Datei rausgesucht. Dies ist von REDfrom. Könnte mir einer weiterhelfen?

case 'recipients': $label = '<div id="field_'.$field->id.'" class="label"><label for="field'.$field->id.'">'.$field->field.'</label></div>'; $element .= "<select id=\"field".$field->id."\" name=\"field".$field->id.'.'.$signup."[recipients][]\"" . ($field->parameters->get('multiple', 1) ? ' multiple="multiple"' : '') . ' size="'.$field->parameters->get('size', 5).'"' . ' class="'.$field->parameters->get('class','').($field->validate ?" required" : '').'"'; $element .= '>'; foreach ($values as $id => $value) { $element .= "<option value=\"".$value->value."\""; if ($answers) { if (in_array($value->value, explode('~~~', $answers[($signup-1)]->fields->$cleanfield))) { $element .= ' selected="selected"'; } } else if ($user->get($field->redmember_field)) { $fvalues = explode(',', $user->get($field->redmember_field)); if (in_array($value->value, $fvalues)) { $element .= ' selected="selected"'; } } else if ($field->default) { $def_vals = explode("\n", $field->default); foreach ($def_vals as $val) { if ($value->value == trim($val)) { $element .= ' selected="selected"'; break; } } } $element .= " >".$value->label."</option>"; } $element .= '</select>'; $element .= "\n"; break; case 'fileupload': $label = '<div id="field_'.$field->id.'" class="label"><label for="field'.$field->id.'">'.$field->field.'</label></div>'; if ($submitter_id == 0) { $element .= "<input type=\"file\" id=\"field".$field->id."\" name=\"field".$field->id.'.'.$signup."[fileupload][]\" class=\"fileupload".$field->parameters->get('class','')."\" id=\"fileupload_".$field->id."\"/>"; } $element .= "\n"; break; } if ($field->fieldtype == 'hidden') { $html .= $element; }

Hoffe, habe den richtigen Ausschnitt rausgeholt, sicher ist da einiges zu viel. Aber denke, ich habe den richtigen Teil erwischt. Kann mir jemand sagen, was ich jetzt hier machen müsste?

MfG
 
Hallo,
erst einmal setze den "Abschnitt" bitte in
PHP:
 - BBTags. 

Mit Joomla arbeite ich eigentlich nicht. Allerdings kannst du beim Fileupload einen "Mime" Typ zuweisen (der Dateityp quasi) und natürlich auch eine maximale Größe. Ein schönes Script dazu findest du hier:
[url=http://www.php-einfach.de/tuts_php_datei_upload.php]PHP-Einfach.de - Tutorial - Datei-upload per Formular[/url]

Das ist aber nur für Bilder. Du möchtest das als Audiodatei aber verwenden. Also musst du ein Mimetype zuweisen. Eine Liste mit allen findest du z.B hier:
[url=http://www.webmaster-toolkit.com/mime-types.shtml]Webmaster Toolkit :: listing of mime types[/url]

In deinem Falle wäre das:
audio/mpeg3

OGG wird leider nicht gelistet.
 
PHP:
                    case 'fileupload':                        $label = '<div id="field_'.$field->id.'" class="label"><label for="field'.$field->id.'">'.$field->field.'</label></div>';                        if ($submitter_id == 0) {                            $element .= "<input type=\"file\" id=\"field".$field->id."\" name=\"field".$field->id.'.'.$signup."[fileupload][]\" class=\"fileupload".$field->parameters->get('class','')."\" id=\"fileupload_".$field->id."\"/>";                        }                        $element .= "\n";                        break;

So besser? :D Okay. Das war noch etwas zu grob für jemanden wie mich.

also $_FILES['datei']['size'] < 10240000)

$dateityp = GetImageSize($_FILES['datei']['tmp_name']);

Hab ich recht, wenn ich diese stellen irgenwie reinpflanzen muss?

 
Zuletzt bearbeitet:
HAllo,

also der code vom letzten beitrag ist edr teil wo es gesendet wird, nicht wo es verarbeitet wird.

Du kannst über 10MB uploaden? das kann ich kaum glauben, mehr erlaubt eigentlich kein hoster.

GetImageSize() ist für bilder und würde bei dir ein fehler ausgeben und alles stoppen.

du suchst
PHP:
if($_FILES['datei']['type'] != 'audio/mpeg3') {echo "fehler kein ...";}

gibt es kein Joomla foren da dies doch bestimt ein Joomla Modul/addon oder wie das auch immer bei dennen heist?

Cheffchen
 
Hallo und Danke,

ich habe meinen eigenen Webspace. Man könnte theoretisch die ganzen 5 GB mit diesem Formular hochladen, und dann hätte ich garnichts mehr.
Das Problem ist, dass wir uns gerade schon eine "Erweiterung" (also so ein Modul) anschauen.

Habe ich euch den falschen Teil des Codes gezeigt?

MfG
 
Danke sehr für den Hinweis. Ich werde mich dann wieder morgen früh mit Ergebnissen melden.

Bis dahin!

EDIT: Immer noch auf der Suche! Über 50 Dateien durchsucht und immer noch nichts (10:00Uhr)..
 
Zuletzt bearbeitet:
Also, ich habe jetzt jede Datei durchsucht. Es waren ca. 113 PHP Dateien. KEINE davon hatte etwas mit
. Ich bin am Ende. Da ihr mir ohne den Code auch nicht weiterhelfen könnt, versuche ich einfach flexibel zu sein. Wenn ich jetzt eine PHP.ini verwenden würde, könnte ich dann noch mit FTP über dem Limit Dinge hochladen?

MfG
 
Ähmm, es könnte aber auch sein, dass das Script nicht auf dem neuesten Stand der Technik ist und $_FILES garnicht vorhanden ist. Suche mal nach $HTTP_POST_FILES
Und wieso brauchst du solange zum durchsuchen. Mit einem Tool w.z.B. wgrep habe ich sowas in Sekunden gefunden.
 
Also, habe jetzt "$HTTP_POST_FILES" und "$_FILES"mit wgrep gesucht. Beides brachte keine Ergebnisse und ich habe den kompletten Joomla Ordner durchsucht, da befinden sich alle Dateien..! So eine scheiße. Denke, ich habe das Tool richtig benutzt, hab auch Testläufe mit anderen namen gemacht. Kann doch irgendwie nicht sein oder?

Finde da übrigens bei "Fileupload" eine verdächtige "AjaxFileUpload 1.0" Datei. Aber sie ist nicht im redFROM Ordner. Kann nicht sein, dass redFORM eine .php Datei vom System übernimmt, oder?

EDIT: Wer möchte, kann auch gerne mal via Teamview bei mir reinschauen.
 
Zuletzt bearbeitet:
Finde da übrigens bei "Fileupload" eine verdächtige "AjaxFileUpload 1.0" Datei.
Tja, das dürfte dann wohl die Erklärung für ein fehlendes $_FILE sein. Da wirst du wohl mal mit google suchen müssen, ob es Einstellmöglichkeiten beim AjaxFileUpload gibt.
 
Tja, das dürfte dann wohl die Erklärung für ein fehlendes $_FILE sein. Da wirst du wohl mal mit google suchen müssen, ob es Einstellmöglichkeiten beim AjaxFileUpload gibt.


Das tut doch nix zur Sache? Die Dateien müssen Serverseitig trotzdem irgendwie verarbeitet werden. d.H. $_FILES muss zwangsläufig irgendwo auftauchen oder übersehe ich da was?
 
Hallo spaceCookie,

ne nicht unbedingt, wenn der mit Flash die sachen weiter verarbeitet dann nicht aber wenn es ein vernünftiger ist hast natürlich recht das steht da $_file irgend wo.

Cheffchen
 
Zurück
Oben