php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 30-06-2010, 00:06
Alex87
 Registrierter Benutzer
Links : Onlinestatus : Alex87 ist offline
Registriert seit: Mar 2010
Beiträge: 24
Alex87 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Fehler bei File-Upload-Script

Hallo Leute,

ich hab ein kleines Script geschrieben, wo Files hochgeladen werden können.

Zurerst wird überprüft ob man auch über das Formular auf die Seite kommt, danach ob der Upload geklappt hat, dann ob es sich auch um ausgewwählte Dateiformate handelt und zum Schluss, ob die Größe von einem Megabyte nicht überschritten wurde.

Klappt an sich alles, nur die if-Abfrage mit der Dateigröße irgendwie nicht. Lustigerweise erscheint egal bei welcher Dateigröße der Text "Video hochgeladen!" aber hochgeladen wird es nur, wenn die Dateigröße tatsächlich unter einem Megabyte ist...versteh ich ned, is doch in derselben IF-Abfrage drin, wie soll das gehen?!

Maximales Uploadlimit vom Server sind 200MB.

Hat jemand ne AHnung`?

Danke & Gruß

Code:
 
<?php
$allowedExtensions = array("avi","mpg","mpeg","mov","mp4","3gp","flv","mkv");
 
if(isset($_POST['submit']) && $_POST['submit']=="Hochladen")
{
 if(!isset($_FILES['thefile']['tmp_name'])){
         die("Es gab einen Fehler bei der Übertragung, bitte versuche es erneut!");
  }else {
   if (!in_array(end(explode(".",  strtolower($_FILES['thefile']['name']))), $allowedExtensions)){
          die("Es können nur folgende Video-Formate hochgeladen werden: AVI, MPEG, MOV, MP4, 3GP, FLV, MKV");
 
  }else {
    if($_FILES['thefile']['size'] > 1000000) {
    die("Dein Video darf leider nicht größer als 1 Megabyte sein!");
 
   }else {
 
 
 $timestamp = time();
 move_uploaded_file($_FILES['thefile']['tmp_name'], $timestamp."_".$_FILES['thefile']['name']); 
 echo "Video hochgeladen!";
    }
   }
  }  
}
else
{
 die("Fehlerhafter Seitenaufruf");
}
 
?>
Mit Zitat antworten
  #2 (permalink)  
Alt 30-06-2010, 00:16
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Der Zweig, in dem du die Größe abfragst, steckt im else-Zweig der Abfrage, ob 'tmp_name' gesetzt ist. Wenn das der Fall ist - dann kommt es überhaupt nicht mehr zur Abfrage der Größe ...

a) Gewöhne dir einen vernünftigen und vor allem konsequenten Einrückungs- und Klammerungs-Stil an - mal schreibst du die öffnende geschweifte Klammer eines Blocks auf die selbe Zeile hinter das if/else, mal auf die nächste ... kein Wunder, dass du da den Durchblick verlierst.

b) Lies bitte im Manual noch mal aufmerksam bzgl. Kontrollstrukturen nach. Statt else { if { ... wäre elseif die bessere Wahl, wenn du eine Reihe „gleichberechtigter“ Fehlerquellen nacheinander abfragen willst.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 30-06-2010, 00:40
Alex87
 Registrierter Benutzer
Links : Onlinestatus : Alex87 ist offline
Registriert seit: Mar 2010
Beiträge: 24
Alex87 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Danke für deine Antwort!

Hab mir den Code teils zusammenkopiert, daher siehts auch so chaotisch aus. Hast aber schon recht, da blickt keiner mehr durch.

Aber das mit der ELSE-Schleife stimmt ja schon - die IF wird ausgeführt, wenn 'tmp_name' NICHT exisitert, und die ELSE dementsprechend, wenn 'tmp_name' existiert. Daher müsste das schon stimmen. Benutz ich die falsche Dateiendung, so erscheint ja auch meine Fehlermeldung.

Kann es vielleicht daran liegen, dass das $_FILES['thefile']['size'] erst NACH dem ausführen von move_uploaded_file existiert?

Grüße
Mit Zitat antworten
  #4 (permalink)  
Alt 30-06-2010, 00:41
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Kann es vielleicht daran liegen, dass das $_FILES['thefile']['size'] erst NACH dem ausführen von move_uploaded_file existiert?
Ganz sicher nicht!
__________________
Wir werden alle sterben
Mit Zitat antworten
  #5 (permalink)  
Alt 30-06-2010, 01:17
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Alex87 Beitrag anzeigen
Aber das mit der ELSE-Schleife stimmt ja schon - die IF wird ausgeführt, wenn 'tmp_name' NICHT exisitert, und die ELSE dementsprechend, wenn 'tmp_name' existiert. Daher müsste das schon stimmen.
Ja, stimmt ... na gut, da bin ich wohl auf das kleine „Chaos“ hereingefallen.

Aber lass dir doch einfach mal am Scriptanfang den Inhalt von $_FILES mit var_dump zur Kontrolle ausgeben - dann siehst du die realen Werte der einzelnen Eigenschaften, und kannst die mit den Vergleichswerten in deinem Script abgleichen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #6 (permalink)  
Alt 30-06-2010, 02:32
Nico_Schubert
 Registrierter Benutzer
Links : Onlinestatus : Nico_Schubert ist offline
Registriert seit: Apr 2003
Ort: Orlamünde, Jena, Thüringen
Beiträge: 27
Nico_Schubert ist zur Zeit noch ein unbeschriebenes Blatt
Nico_Schubert eine Nachricht über Skype™ schicken
Standard

Ich vermute das entweder $_FILES['thefile']['size'] kein Wert zugewiesen wurde oder das Video einen kleineren Wert hat als 1000000 Bytes.

Ich würde an deiner Stelle keinen Abbruch mit der PHP Funktion die() machen. Die PHP Funktion die() sollte man als letzte Möglichkeit verwenden. Alles andere ist nach meiner Meinung sehr unsauber gelöst. Du solltest dir an dieser Stelle mein Tutorial "Ausnahmebehandlung in Php" -> http://www.php-space.info/php/space/...ung-in-php.php mal ansehen.
__________________
Webspace , Php
Mit Zitat antworten
  #7 (permalink)  
Alt 30-06-2010, 04:53
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Wenn du ein Formular abschickst, ohne eine Datei hochzuladen, existiert $_FILES[...]['tmp_name'] trotzdem und $_FILES[...]['size'] ist 0. Vielleicht lädst du also gar nichts hoch, jedenfalls nicht im File-Input mit dem Namen thefile.
Mit Zitat antworten
  #8 (permalink)  
Alt 30-06-2010, 20:33
Alex87
 Registrierter Benutzer
Links : Onlinestatus : Alex87 ist offline
Registriert seit: Mar 2010
Beiträge: 24
Alex87 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Also Leute, ich habs hinbekommen. War folgendes Problem, von dem ihr nichts wissen konntet:

Im Upload-Formular hatte ich max_file_size 1 MB angegeben. Ich dachte das funzt einfach ned, aber anscheinend doch Die Datei wird einfach nicht übertragen, das Script aber dennoch ausgeführt...

Vielen Dank an Alle!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
File upload error - unable to create a temporary file in unknown on line 0 haggybear Fragen zu Installation & Konfiguration (LAMP, WAMP & Co.) 4 08-06-2005 11:28
Fehler in Upload-Script Gismo PHP Developer Forum 3 12-09-2004 19:00
upload script fehler taucht auf tarantino PHP Developer Forum 17 20-04-2004 23:26
Fehler im Upload-Script Honny PHP Developer Forum 2 24-10-2002 00:25
File Upload Script??? php4fun_de PHP Developer Forum 1 28-04-2002 13:46

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:41 Uhr.