Problem mit Upload-Formular - IE und Firefox

Hallo,

ich habe vor ein kleines Upload-Formular zu basteln. Habe auch schon einiges zusammenbekommen indem ich gegoogelt habe bis zum abwinken. Nun habe ich aber noch ein Problem, bei welchem ich einfach nicht weiter komme. Sitze jetzt schon ne ganze Woche dran aber ich kann den Fehler nicht finden. Da ich nicht genau weiß welche Codestückchen ich posten muß zeige ich euch mal den kompletten. Das was ich bisher habe sieht folgendermaßen aus: [code]<?php
/*

// Einstellungen für das Script
$AdminPasswort = “passwort”; // Upload Passwort
$AdminEmail = “email”; // Admin Email
$AdminNotify = 1; // Admin per Email informieren wenn eine Datei heruntergeladen wurde (1 = Ja | 0 = Nein)
$PfadZumScript = “scriptpfad”; // Komplette Webadresse zum Script
$Dateiendungen = array( “zip”, “rar”, “7z”, “pdf”, “jpg”, “jpeg”, “mp3”, “wav”, “mid”, “doc”, “xls”, “html”, “htm”, “ufo”); // erlaubte Dateiendungen
$StandardBetreff = “Eine neue Datei von User”; // Standardbetreff falls kein Betreff im Formular angegeben wurde

/* ******************************************************** /
/
******* Ab hier nichts mehr ändern ******* /
/
******************************************************** */

// Email auf Format pruefen
function checkEmail( $email )
{
$nonascii = “\x80-\xff”;
$nqtext = “[^\\$nonascii\015\012”]";
$qchar = “\\[^$nonascii]”;
$normuser = ‘[a-zA-Z0-9][a-zA-Z0-9_.-]’;
$quotedstring = “”(?:$nqtext|$qchar)+"";
$user_part = “(?:$normuser|$quotedstring)”;
$dom_mainpart = '[a-zA-Z0-9][a-zA-Z0-9._-]
\.’;
$dom_subpart = ‘(?:[a-zA-Z0-9][a-zA-Z0-9._-]\.)’;
$dom_tldpart = ‘[a-zA-Z]{2,5}’;
$domain_part = “$dom_subpart$dom_mainpart$dom_tldpart”;
$pattern = “$user_part@$domain_part”;

if (!preg_match( "/^$pattern$/", $email ))
{
    return FALSE;
}
else
{
    return TRUE;
}

}

// DownloadLink fuer den Mailbody
function getDownloadLink( $DownloadHash )
{
global $PfadZumScript;
return <<<DOWNLOADLINK

Der nachfolgende Abschnitt wurde automatisch generiert.

{$_FILES[‘datei’][‘name’]} wurde von User auf Ihren Server geladen. Sie können diese Datei unter dem folgenden Link herunterladen:

{$PfadZumScript}index.php?aktion=download&datei={$DownloadHash}

Sollten Sie keine HTML-eMails empfangen können, kopieren Sie bitte den oben genannten Link in Ihren Internet-Browser.

DOWNLOADLINK;
}

/* ---------------------------------------- /
/
— Maximale Uploadgroesse ermitteln — /
/
---------------------------------------- */
// Die Funktionen dieses Abschnitts stammen
// von http://www.webmaster-resource.de

function PHPINIWertUmwandeln( $Groesse )
{
$Werte[‘MB’] = 1048576;
$Werte[‘Mb’] = 1048576;
$Werte[‘M’] = 1048576;
$Werte[‘m’] = 1048576;
$Werte[‘KB’] = 1024;
$Werte[‘Kb’] = 1024;
$Werte[‘K’] = 1024;
$Werte[‘k’] = 1024;

while (list( $Schluessel ) = each( $Werte ))
{
    if ((strlen( $Groesse ) > strlen( $Schluessel )) && (substr( $Groesse, strlen( $Groesse ) - strlen( $Schluessel )) == $Schluessel ))
    {
        $Groesse = substr( $Groesse, 0, strlen( $Groesse ) - strlen( $Schluessel ) ) * $Werte[$Schluessel];
        break;
    }
}
return $Groesse;

}

function UploadmoeglichkeitPruefen()
{
$Uploadmoeglichkeit = TRUE;
if (strtolower( @ini_get( ‘file_uploads’ ) ) == ‘off’ || @ini_get( ‘file_uploads’ ) ==0)
{
$Uploadmoeglichkeit = FALSE;
}
return $Uploadmoeglichkeit;
}

function MaximaleDateiuploadGroesseErmitteln()
{
$MaximaleDateiuploadGroesse = 0;
if ($Dateigroesse = ini_get( ‘upload_max_filesize’ ))
{
$MaximaleDateiuploadGroesse = PHPINIWertUmwandeln( $Dateigroesse );
}
if ($Postgroesse = ini_get( ‘post_max_size’ ))
{
$Postgroesse = PHPINIWertUmwandeln( $Postgroesse );
if ($Postgroesse < $MaximaleDateiuploadGroesse)
{
$MaximaleDateiuploadGroesse = $Postgroesse;
}
}
return $MaximaleDateiuploadGroesse;
}

function UploadLimit()
{
if (UploadmoeglichkeitPruefen())
{
$MaximaleDateiuploadGroesse = MaximaleDateiuploadGroesseErmitteln();
echo “<span style=“color: #FFFFFF; font-size: 0.8em; font-weight: normal;”>(max. Dateigröße: " .number_format( $MaximaleDateiuploadGroesse / 1024, 0, “,”, “.” ). " KB)”;
}
}

// --------------------------------------------------------------
// ------ HAUPTSCRIPT BEGINNT HIER ------
// --------------------------------------------------------------

if (isset( $_GET[‘aktion’] ) )
{
switch ($_GET[‘aktion’])
{
// ------------------------------
// — Neue Datei hochladen —
// ------------------------------
case ‘senden’:
if (isset( $_POST[‘send_file’] ) &&
$_POST[‘admin_passwort’] == $AdminPasswort &&
$_FILES[‘datei’][‘size’] > 0 !== false)
{
// Maskierung entfernen
if (get_magic_quotes_gpc())
{
$_POST = array_map( ‘stripslashes’, $_POST );
}
// Pruefen ob die Dateiendung erlaubt ist
$UploadDateiEndung = array_pop( explode( “.”, strtolower( $FILES[‘datei’][‘name’] ) ) );
if (!in_array( $UploadDateiEndung, $Dateiendungen ))
{
die( “Die angehängte Datei hat eine nicht erlaubte Dateiendung!” );
}
// Dateiendung ok
$ersetzen = array( ‘ä’ => ‘ae’, ‘ö’ => ‘oe’, ‘ü’ => ‘ue’, ‘ß’ => ‘ss’, ’ ’ => '
’ );
$DateiNameNeu = strtr( strtolower( $_FILES[‘datei’][‘name’] ), $ersetzen );
$DownloadHash = md5( $DateiNameNeu );
$umask_alt = umask( 0 );
if (@move_uploaded_file( $_FILES[‘datei’][‘tmp_name’], $DateiNameNeu ))
{
// Mail Header
$MailHeader = “From:{$AdminEmail}<{$AdminEmail}>\n”;
$MailHeader .= “MIME-Version: 1.0\r\n”;
$MailHeader .= “Content-Type: text/html\n”;
$MailHeader .= “Content-Transfer-Encoding: 8bit\n”;
$MailHeader .= “Message-ID: <” .time(). " noreply@" .$_SERVER[‘SERVER_NAME’]. “>\r\n”;
$MailHeader .= “X-Mailer: PHP v” .phpversion(). “\r\n”;
// Mail Betreff
$MailBetreff = strlen( $_POST[‘mail_betreff’] ) > 3 ? htmlspecialchars( $_POST[‘mail_betreff’] ) : $StandardBetreff;
// Mail Body
$MailBody = nl2br( htmlspecialchars( $_POST[‘mail_text’] ) );
$MailBody .= getDownloadLink( $DownloadHash );
if (!@mail ( $AdminEmail, $MailBetreff, $MailBody, $MailHeader ))
{
$MailSendFehler = true;
}
// CHMOD setzen
@chmod( $DateiNameNeu, 0755 );
umask( $umask_alt );
header( 'location: ’ .$_SERVER[‘PHP_SELF’]. ‘?status=UploadOK’ );
}
else // Upload-Fehler
{
umask( $umask_alt );
header( 'location: ’ .$_SERVER[‘PHP_SELF’]. ‘?status=UploadERROR’ );
}
}
elseif ($_POST[‘admin_passwort’] != $AdminPasswort)
{
$PasswortERROR = true;
}

    break;

    // -----------------------------
    // ---  Datei herunterladen  ---
    // -----------------------------
    case 'download':
        if (isset( $_GET['datei'] )&&
            strlen( $_GET['datei'] ) == 32)
        {
            // Falls ein Trottel die Index-Datei runterladen will
            if ($_GET['datei'] == md5( "index.php" ))
            {
                die( "Nice try ;-)" );
            }
            // angeforderte Datei ermitteln
            foreach (glob( "*.*" ) as $Dateiname)
            {
                if ($_GET['datei'] == md5( $Dateiname ))
                {
                    $DateiDownload = $Dateiname;
                }
            }
            if ($DateiDownload)
            {
                // Datei senden und ggfs Admin benachrichtigen
                header( "Content-Type: application/octet-stream" );
                header( "Content-Disposition: attachment; filename=\"" .$DateiDownload. "\"" );
                header( "Content-Length: " .filesize( $DateiDownload ) );
                header( "Pragma: no-cache" );
                header( "Expires: 0" );
                readfile( $DateiDownload );

                // Benachrichtigung an Admin senden
                if ($AdminNotify)
                {
                    // Mail Header
                    $MailHeader  = "From:{$AdminEmail}<{$AdminEmail}>\n";
                    $MailHeader .= "MIME-Version: 1.0\r\n";
                    $MailHeader .= "Content-Type: text/html\n";
                    $MailHeader .= "Content-Transfer-Encoding: 8bit\n";
                    $MailHeader .= "Message-ID: <" .time(). " noreply@" .$_SERVER['SERVER_NAME']. ">\r\n";
                    $MailHeader .= "X-Mailer: PHP v" .phpversion(). "\r\n";
                    // Mail Body
                    $AdminMailBody  = "Soeben wurde die Datei {$DateiDownload} heruntergeladen.<br>";

                    @mail( $AdminEmail, "FileSend Datei wurde heruntergeladen", $AdminMailBody, $MailHeader );
                }
            }
            else
            {
                $DownloadERROR = true;
            }
        }
    break;

}

}
?>

Upload-Bereich von User

User

Upload Meldungen
<?php // Upload-Meldungen if ($_GET['status'] == 'UploadOK') echo '

Hinweis: Die Datei wurde erfolgreich übertragen!


'; if ($_GET['status'] == 'UploadERROR') echo '

F E H L E R: Die Datei konnte nicht übertragen werden!
Bitte stellen Sie sicher daß das Uploadlimit nicht überschritten wurde!


'; if ($PasswortERROR) echo '

Hinweis: Das angegebene Passwort ist nicht korrekt!


'; if ($MailSendFehler) echo '

Hinweis: Beim senden der eMail trat ein Fehler auf!


'; // Download-Meldung if ($DownloadERROR) echo '

Hinweis: Die angeforderte Datei konnte nicht gefunden werden!


'; ?>

Fertige Uploads

Alle fertigen Uploads bleiben max. 30 Tage auf dem Server erhalten. Danach werden diese in der Regel automatisch gelöscht. Bei weiteren Fragen wenden Sie sich an den Administrator!

<?php // tabelle echo "

\n"; echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo "\n"; // fuer alle .jpg bilder zB sowas: // foreach(glob(".jpg") as $datei) { foreach(glob("{*.zip,*.rar,*.7z,*.pdf,*.jpg,*.jpeg,*.mp3,*.wav,*.doc,*.xls,*.html,*.htm}", GLOB_BRACE) as $datei) { // groesse $groesse = filesize($datei)/1024; // letzte aenderung $aenderung = date("d.m.y, H:i:s", filemtime($datei)); if($i%2 == 0) { echo "\n"; } else { echo "\n"; } echo " \n"; echo " \n"; echo " \n"; echo "\n"; $i++; } echo "
DateinameGröße in KBUpload am
" . $datei . "".round($groesse, 2)."" . $aenderung . "
\n"; ?>




</fieldset>
</form>

Up- & Downloadrechner

Hier findet ihr einen kleinen "Up- & Downloadrechner". Mit diesem Rechner könnt ihr vor dem Upload die ungefähre Ladezeit einer Datei ermitteln.




Neuer Upload

Die mit * (Stern) gekennzeichneten Felder sind "Pflichtfelder" und sind für einen fehlerfreien Datei-Upload zwingend erforderlich. Der Upload kann je nach Verbindungsgeschwindigkeit mehrere Minuten in Anspruch nehmen. Bitte das Fenster in dieser Zeit NICHT schließen, da sonst der Upload unterbrochen wird!

Passwort*: Nachricht:<?php echo $_POST['mail_text']; ?> Datei für den Upload: <?php UploadLimit(); ?>
Erlaubte Dateitypen:
zip, rar, 7z, pdf, jpg, jpeg, mp3, wav, doc, xls, html, htm, ufo



Die Upload-Geschwindigkeit ist abhängig von der Internetverbindung. Dateien mit mehreren MB (50, 100 oder mehr) dauern selbst mit DSL seine Zeit! Auch wenn es den Anschein macht, das sich nichts mehr tut, bitte abwarten bis eine Rückmeldung im oberen Bereich unter "Upload Meldungen" erscheint.

     

</fieldset>
</form>


Bitte warten...




Die Upload-Geschwindigkeit ist abhängig von der Internetverbindung. Dateien mit mehreren MB (50, 100 oder mehr) dauern selbst mit DSL seine Zeit! Bitte abwarten bis eine Rückmeldung unter "Upload Meldungen" erscheint.

Zur Kontrolle findet ihr hier einen kleinen "Up- & Downloadrechner". Der Rechner wird in einem Pop-Up geöffnet. Bitte den Pop-Up Blocker für diese Funktion kurzzeitig deaktivieren.





[/code]

Das Formular funktioniert soweit und lädt auch die Dateien hoch, aber ich möchte gerne, das während des Ladens das Formular komplett ausgeblendet wird und gleichzeitig eine animierte Grafik mir einem Hinweistext eingeblendet wird. Das ausblenden klappt wunderbar, nur es wird weder im IE, noch im Firefox das DIV mit der Grafik und dem Text angezeigt.

Wo liegt der Fehler??? Ich finde ihn einfach nicht.

Habe folgendes Javascript genommen:

Head-Bereich: [code][/code]

Das einzublendende DIV sieht so aus:

[code]

Bitte warten...




Die Upload-Geschwindigkeit ist abhängig von der Internetverbindung. Dateien mit mehreren MB (50, 100 oder mehr) dauern selbst mit DSL seine Zeit! Bitte abwarten bis eine Rückmeldung unter "Upload Meldungen" erscheint.

Zur Kontrolle findet ihr hier einen kleinen "Up- & Downloadrechner". Der Rechner wird in einem Pop-Up geöffnet. Bitte den Pop-Up Blocker für diese Funktion kurzzeitig deaktivieren.





[/code]

Was mache ich falsch bzw. wo liegt der Fehler???

Habe da noch ein paar Wünsche wobei ich nicht weiß ob das in dieses Unterforum gehört. Und zwar hätte ich in meinem Formular noch gerne eine Angabe eingebaut, welche angibt in welches Verzeichnis die Dateien upgeloadet werden sollen. Also ein fest eingestelltes Verzeichnis. Im Moment lädt er die Dateien dort hin wo sich das Script befindet, möchte aber einen Extra-Ordner für die Uploads anlegen.

Außerdem hätte ich gerne noch einen Dateinamenvergleich. Zur Zeit ist es so, daß das Formular eine Namensgleiche Datei einfach überschreibt ohne zu fragen. Wäre schön wenn die Datei entweder automatisch umbenannt wird oder wenn ein Hinweis erscheint das diese Datei nicht hochgeladen werden kann, da der Dateiname schon existiert.

Was noch interessant wäre eine Funktion, welche nach einer bestimmten Zeit die entsprechenden Uploads automatisch löscht.

Und zu guterletzt bräuchte ich noch eine Funktion, welche mir die Uploads nach Upload-Datum sortiert. Angezeigt wird der Inhalt ja schon allerdings nicht nach Upload-Datum. Schön wäre auch eine Unterteilung in kb - MB - GB. Bisher wird nur kb angezeigt.

Kann mir da jemand helfend unter die Arme greifen? Bin noch Newbie in Sachen Javascript und PHP und tue mich da noch ein klein wenig schwer mich da rein zu denken. Komme zur Zeit nicht weiter.

Bitte um Hilfe…

Moin,

PHP wird auf dem Server verarbeitet vor der Ausgabe an den Browser, d.h. du schickst das Formular ab, PHP merkt: Oh hab was zu tun und arbeitet alles ab, am Ende folgt dann die Ausgabe an den Browser, d.h. zwischendurch (also während PHP arbeitet irgendetwas auszugeben, funktioniert nicht :wink: ) Die hübschen Uploadbalken, die du bei manchen Hostern siehst (z.B. megaupload.com) basieren auf Flash.

Ein Verzeichnis anzulegen ist mit PHP überhaupt kein Problem und du brauchst dann nur noch den Pfad zu ändern (hab grad keine Lust geschätzte 500 Zeilen Code durchzuwühlen und zu schauen, wo das genau bei dir steht).

Was den Dateinamen angeht: file_exists() hilft dir da weiter. So kannst du einfach überprüfen, ob eine Datei schon existiert und das Ganze per if-Anweisungen steuern.

if(file_exists($datei)) { echo "Mich gibts schon."; }
else { // Upload }

Für die Zeit würde ich mir eine Text-Datei anlegen, in der die Uploads mit Datum, etc. stehen, ca. so:
ID|Dateiname;Uploaddatum

Das tolle daran ist, dass du zum einen prüfen kannst, ob das Uploaddatum X Tage/Stunden zurückliegt und so das Ganze löschen kannst und zum anderen kann man anhand daran eine Sortierung vornehmen. Die Dateisystem-Funktionen helfen dir dabei weiter und natürlich explode() bzw. split()

MfG
myPages

Hallo my Pages,

ich muß gestehen so ganz verstehe ich das ganze noch nicht. Sorry bin neu im Bereich PHP und kenne noch nicht die ganzen Zuordnungen und wie das so funktioniert aber ich arbeite daran. :wink:

Klar verständlich das du meinen Code nicht durchschaust, würde ich vermutlich auch nicht machen, wußte mir nur nicht besser zu helfen, deswegen habe ich diesen direkt mal mitgepostet.

Bitte gib mir mal ein Hinweis, wo und wie ich diese Codeschnipsel einbauen muß. Blicke noch nicht ganz durch die Struktur und vor allem wo man was eintragen muß. Die Grafik sollte angezeigt werden, wenn der Upload stattfindet. Wenn ich den Code etwas umbaue, dann wird die Grafik ja angezeigt allerdings nur im Firefox, der IE zeigt rein gar nichts an, als wenn er die Datei gar nicht darstellen könnte.

Kann man die Datei auch so umbauen, das man mehrere php-Dateien hat wo entsprechende Funktionen getrennt sind und welche trotzdem zusammenarbeiten? Ich glaube da ist die Übersicht etwas besser. Könnte mir da mal jemand unter die Arme greifen?

Moin,

ja du kannst PHP-Dateien aufsplitten und hinterher zusammensetzen. Die Stichwörter dafür lauten function , include() bzw. require().

Im Prinzip kannst du alles bis zum Hinweis Hauptscript beginnt hier in eine andere Datei packen (bloss <? stehen lassen am Anfang und in der anderen Datei natürlich auch hinzufügen :wink: )

Würde dann so aussehen:

funktionen.php

<?php
/*

// Einstellungen für das Script
$AdminPasswort   = "passwort"; // Upload Passwort
$AdminEmail      = "email"; // Admin Email
$AdminNotify     = 1; // Admin per Email informieren wenn eine Datei heruntergeladen wurde (1 = Ja | 0 = Nein)
$PfadZumScript   = "scriptpfad"; // Komplette Webadresse zum Script
$Dateiendungen   = array( "zip", "rar", "7z", "pdf", "jpg", "jpeg", "mp3", "wav", "mid", "doc", "xls", "html", "htm", "ufo"); // erlaubte Dateiendungen
$StandardBetreff = "Eine neue Datei von User"; // Standardbetreff falls kein Betreff im Formular angegeben wurde


/* ******************************************************** */
/*        ******* Ab hier nichts mehr ändern *******        */
/* ******************************************************** */

// Email auf Format pruefen
function checkEmail( $email )
{
    $nonascii      = "\x80-\xff";
    $nqtext        = "[^\\\\$nonascii\015\012\"]";
    $qchar         = "\\\\[^$nonascii]";
    $normuser      = '[a-zA-Z0-9][a-zA-Z0-9_.-]*';
    $quotedstring  = "\"(?:$nqtext|$qchar)+\"";
    $user_part     = "(?:$normuser|$quotedstring)";
    $dom_mainpart  = '[a-zA-Z0-9][a-zA-Z0-9._-]*\\.';
    $dom_subpart   = '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*';
    $dom_tldpart   = '[a-zA-Z]{2,5}';
    $domain_part   = "$dom_subpart$dom_mainpart$dom_tldpart";
    $pattern       = "$user_part\@$domain_part";

    if (!preg_match( "/^$pattern$/", $email ))
    {
        return FALSE;
    }
    else
    {
        return TRUE;
    }
}

// DownloadLink fuer den Mailbody
function getDownloadLink( $DownloadHash )
{
    global $PfadZumScript;
    return <<<DOWNLOADLINK



Der nachfolgende Abschnitt wurde automatisch generiert.

{$_FILES['datei']['name']} wurde von User auf Ihren Server geladen. Sie können diese Datei unter dem folgenden Link herunterladen:

{$PfadZumScript}index.php?aktion=download&datei={$DownloadHash}

Sollten Sie keine HTML-eMails empfangen können, kopieren Sie bitte den oben genannten Link in Ihren Internet-Browser.

DOWNLOADLINK;
}

/* ---------------------------------------- */
/* --- Maximale Uploadgroesse ermitteln --- */
/* ---------------------------------------- */
// Die Funktionen dieses Abschnitts stammen
// von http://www.webmaster-resource.de

function PHPINIWertUmwandeln( $Groesse )
{
    $Werte['MB'] = 1048576;
    $Werte['Mb'] = 1048576;
    $Werte['M']  = 1048576;
    $Werte['m']  = 1048576;
    $Werte['KB'] = 1024;
    $Werte['Kb'] = 1024;
    $Werte['K']  = 1024;
    $Werte['k']  = 1024;

    while (list( $Schluessel ) = each( $Werte ))
    {
        if ((strlen( $Groesse ) > strlen( $Schluessel )) && (substr( $Groesse, strlen( $Groesse ) - strlen( $Schluessel )) == $Schluessel ))
        {
            $Groesse = substr( $Groesse, 0, strlen( $Groesse ) - strlen( $Schluessel ) ) * $Werte[$Schluessel];
            break;
        }
    }
    return $Groesse;
}

function UploadmoeglichkeitPruefen()
{
    $Uploadmoeglichkeit = TRUE;
    if (strtolower( @ini_get( 'file_uploads' ) ) == 'off' || @ini_get( 'file_uploads' ) ==0)
    {
        $Uploadmoeglichkeit = FALSE;
    }
    return $Uploadmoeglichkeit;
}

function MaximaleDateiuploadGroesseErmitteln()
{
    $MaximaleDateiuploadGroesse = 0;
    if ($Dateigroesse = ini_get( 'upload_max_filesize' ))
    {
        $MaximaleDateiuploadGroesse = PHPINIWertUmwandeln( $Dateigroesse );
    }
    if ($Postgroesse = ini_get( 'post_max_size' ))
    {
        $Postgroesse = PHPINIWertUmwandeln( $Postgroesse );
        if ($Postgroesse < $MaximaleDateiuploadGroesse)
        {
            $MaximaleDateiuploadGroesse = $Postgroesse;
        }
    }
    return $MaximaleDateiuploadGroesse;
}

function UploadLimit()
{
    if (UploadmoeglichkeitPruefen())
    {
        $MaximaleDateiuploadGroesse = MaximaleDateiuploadGroesseErmitteln();
        echo "<span style=\"color: #FFFFFF; font-size: 0.8em; font-weight: normal;\">(max. Dateigr&ouml;&szlig;e: " .number_format( $MaximaleDateiuploadGroesse / 1024, 0, ",", "." ). " KB)</span>";
    }
}
?>

Deine andere, alte Datei:

<?php
    include("funktionen.php"); // setzt voraus, dass die funktionen.php im gleichem Verzeichnis liegt!

// --------------------------------------------------------------
//           ------   HAUPTSCRIPT BEGINNT HIER   ------
// --------------------------------------------------------------

if (isset( $_GET['aktion'] ) )
{
    switch ($_GET['aktion'])
    {
        // ------------------------------
        // ---  Neue Datei hochladen  ---
        // ------------------------------
        case 'senden':
            if (isset( $_POST['send_file'] ) &&
                $_POST['admin_passwort'] == $AdminPasswort &&
                $_FILES['datei']['size'] > 0 !== false)
            {
                // Maskierung entfernen
                if (get_magic_quotes_gpc())
                {
                    $_POST = array_map( 'stripslashes', $_POST );
                }
                // Pruefen ob die Dateiendung erlaubt ist
                $UploadDateiEndung = array_pop( explode( ".", strtolower( $_FILES['datei']['name'] ) ) );
                if (!in_array( $UploadDateiEndung, $Dateiendungen ))
                {
                    die( "Die angehängte Datei hat eine nicht erlaubte Dateiendung!" );
                }
                // Dateiendung ok
                $ersetzen = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '_' );
                $DateiNameNeu = strtr( strtolower( $_FILES['datei']['name'] ), $ersetzen );
                $DownloadHash = md5( $DateiNameNeu );
                $umask_alt = umask( 0 );
                 if (@move_uploaded_file( $_FILES['datei']['tmp_name'], $DateiNameNeu ))
                {
                    // Mail Header
                    $MailHeader  = "From:{$AdminEmail}<{$AdminEmail}>\n";
                    $MailHeader .= "MIME-Version: 1.0\r\n";
                    $MailHeader .= "Content-Type: text/html\n";
                    $MailHeader .= "Content-Transfer-Encoding: 8bit\n";
                                         $MailHeader .= "Message-ID: <" .time(). " noreply@" .$_SERVER['SERVER_NAME']. ">\r\n";
                    $MailHeader .= "X-Mailer: PHP v" .phpversion(). "\r\n";
                    // Mail Betreff
                    $MailBetreff = strlen( $_POST['mail_betreff'] ) > 3 ? htmlspecialchars( $_POST['mail_betreff'] ) : $StandardBetreff;
                    // Mail Body
                    $MailBody  = nl2br( htmlspecialchars( $_POST['mail_text'] ) );
                    $MailBody .= getDownloadLink( $DownloadHash );
                    if (!@mail ( $AdminEmail, $MailBetreff, $MailBody, $MailHeader ))
                    {
                        $MailSendFehler = true;
                    }
                    // CHMOD setzen
                    @chmod( $DateiNameNeu, 0755 );
                    umask( $umask_alt );
                    header( 'location: ' .$_SERVER['PHP_SELF']. '?status=UploadOK' );
                }
                else // Upload-Fehler
                {
                    umask( $umask_alt );
                    header( 'location: ' .$_SERVER['PHP_SELF']. '?status=UploadERROR' );
                }
            }
            elseif ($_POST['admin_passwort'] != $AdminPasswort)
            {
                $PasswortERROR = true;
            }

        break;

        // -----------------------------
        // ---  Datei herunterladen  ---
        // -----------------------------
        case 'download':
            if (isset( $_GET['datei'] )&&
                strlen( $_GET['datei'] ) == 32)
            {
                // Falls ein Trottel die Index-Datei runterladen will
                if ($_GET['datei'] == md5( "index.php" ))
                {
                    die( "Nice try ;-)" );
                }
                // angeforderte Datei ermitteln
                foreach (glob( "*.*" ) as $Dateiname)
                {
                    if ($_GET['datei'] == md5( $Dateiname ))
                    {
                        $DateiDownload = $Dateiname;
                    }
                }
                if ($DateiDownload)
                {
                    // Datei senden und ggfs Admin benachrichtigen
                    header( "Content-Type: application/octet-stream" );
                    header( "Content-Disposition: attachment; filename=\"" .$DateiDownload. "\"" );
                    header( "Content-Length: " .filesize( $DateiDownload ) );
                    header( "Pragma: no-cache" );
                    header( "Expires: 0" );
                    readfile( $DateiDownload );

                    // Benachrichtigung an Admin senden
                    if ($AdminNotify)
                    {
                        // Mail Header
                        $MailHeader  = "From:{$AdminEmail}<{$AdminEmail}>\n";
                        $MailHeader .= "MIME-Version: 1.0\r\n";
                        $MailHeader .= "Content-Type: text/html\n";
                        $MailHeader .= "Content-Transfer-Encoding: 8bit\n";
                        $MailHeader .= "Message-ID: <" .time(). " noreply@" .$_SERVER['SERVER_NAME']. ">\r\n";
                        $MailHeader .= "X-Mailer: PHP v" .phpversion(). "\r\n";
                        // Mail Body
                        $AdminMailBody  = "Soeben wurde die Datei {$DateiDownload} heruntergeladen.<br>";

                        @mail( $AdminEmail, "FileSend Datei wurde heruntergeladen", $AdminMailBody, $MailHeader );
                    }
                }
                else
                {
                    $DownloadERROR = true;
                }
            }
        break;

    }
}
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<BODY bgcolor="#000000" style= alink="#000099" link="red" vlink="#999999">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Upload-Bereich von User</title>
<style type="text/css">
<!--
* { margin: 0; padding: 0; }
body { text-align: center; font: normal 62.5% Verdana, Arial, Helvetica, sans-serif;}
#rahmen { width: 500px; margin: 1.5em auto; text-align: left; }
fieldset { padding: 0px 15px; border: solid 1px #FF0000; }
legend { font: bold 1.8em "Courier New", Courier, monospace; color: #FF0000; }
label { display: block; font-size: 1.2em; font-weight: bold; margin-top: 1.0em; color: #FF0000; }
input { width: 250px; }
textarea { width: 400px; height: 160px; }
input.file { width: 400px; }
input.button { width: 150px; margin: 25px 0px 20px 128px; }
h1 { font: bold 2.2em Arial, Helvetica, sans-serif; margin-bottom: 1.2em; text-align: center; }
h3 { font: bold 1.2em Verdana, Arial, Helvetica, sans-serif; }
p { font-size: 1.2em; text-align: justify; }
.hinweis { color: #FF0000; }
-->
</style>

<script type="text/javascript">
<!--
function checkForm()
{
    var Fehlermeldung = "";
    if (document.FileSend.admin_passwort.value == "")
    {
        Fehlermeldung += "Bitte das Passwort für den Upload eingeben!\n";
    }
    if (document.FileSend.datei.value == "")
    {
        Fehlermeldung += "Bitte eine Datei für den Upload auswählen!\n";
    }
    if (Fehlermeldung)
    {
        alert(Fehlermeldung);
        return false;
    }
    else
    {
        return true;
    }
}
// -->
</script>

<script type="text/javascript">

    function showWaitMessage() {

document.getElementById("submitDiv").style.display = "none";
document.getElementById("waitingDiv").style.display = "block";


    }

</script>



<script language="JAVASCRIPT" type="TEXT/JAVASCRIPT">
<!--
var win=null;
function NewWindow(mypage,myname,w,h,pos,infocus){
if(pos=="random"){myleft=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;mytop=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;}
if(pos=="center"){myleft=(screen.width)?(screen.width-w)/2:100;mytop=(screen.height)?(screen.height-h)/2:100;}
else if((pos!='center' && pos!="random") || pos==null){myleft=0;mytop=20}
settings="width=" + w + ",height=" + h + ",top=" + mytop + ",left=" + myleft + ",scrollbars=yes,location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no";win=window.open(mypage,myname,settings);
win.focus();}
// -->
</script>

</head>
<body>


<div id="rahmen">
<h1><font color="#FFFFFF"><script type="text/javascript">
H=new Date(); H.getHours(); S=H.getHours(); var a="";
if(S>12 ) {a="Guten Morgen,"};
if(S<=18 && S>=12) {a="Guten Tag,"};
if(S<=05) {a="Guten Abend,"};
document.write(a)
</script>

User</font></h1>

<div id="submitDiv">
<div id="rahmen">
    <fieldset>
    <legend>Upload Meldungen</legend>
    <br>
    <?php
// Upload-Meldungen
if ($_GET['status'] == 'UploadOK') echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Die Datei wurde erfolgreich übertragen!</font></h3><br>';
if ($_GET['status'] == 'UploadERROR') echo '<h3><span class="hinweis">F E H L E R:</span> <font color="#FFFFFF">Die Datei konnte nicht übertragen werden!<br>Bitte stellen Sie sicher daß das Uploadlimit nicht überschritten wurde!</font></h3><br>';
if ($PasswortERROR) echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Das angegebene Passwort ist nicht korrekt!</font></h3><br>';
if ($MailSendFehler) echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Beim senden der eMail trat ein Fehler auf!</font></h3><br>';
// Download-Meldung
if ($DownloadERROR) echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Die angeforderte Datei konnte nicht gefunden werden!</font></h3><br>';
?></fieldset>
    </form>
</div><br>



<div id="rahmen">
    <fieldset>
    <legend>Fertige Uploads</legend>
        <p style="margin: 20px 0px; color: #FFFFFF;">Alle fertigen Uploads bleiben max. 30 Tage auf dem Server erhalten. Danach werden diese in der Regel automatisch gelöscht. Bei weiteren Fragen wenden Sie sich an den Administrator!<br><br>

<?php
  // tabelle
  echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";

  echo "<tr style=\"font-weight:bold;\">\n";
  echo "  <td style=\"width:200px;color:#ffffff;font-size:10pt;\">Dateiname</td>\n";
  echo "  <td style=\"width:200px;color:#ffffff;font-size:10pt;\">Größe in KB</td>\n";
  echo "  <td style=\"width:200px;color:#ffffff;font-size:10pt;\">Upload am</td>\n";
  echo "</tr>\n";


  // fuer alle .jpg bilder zB sowas:
  // foreach(glob(".jpg") as $datei) {
  foreach(glob("{*.zip,*.rar,*.7z,*.pdf,*.jpg,*.jpeg,*.mp3,*.wav,*.doc,*.xls,*.html,*.htm}", GLOB_BRACE) as $datei) {

  // groesse
$groesse = filesize($datei)/1024;

    // letzte aenderung
    $aenderung = date("d.m.y, H:i:s", filemtime($datei));

    if($i%2 == 0) {
      echo "<tr>\n";
    } else {
      echo "<tr style=\"background-color:#000000; color:#000000\">\n";
    }
      echo "  <td style=\"width:200px;font-size:8pt;\"><a href=\" " .$datei . "\">" . $datei . "</a></td>\n";
      echo "  <td style=\"width:200px;font-size:8pt;color:#ffffff;\">".round($groesse, 2)."</td>\n";
      echo "  <td style=\"width:200px;font-size:8pt;color:#ffffff;\">" . $aenderung . "</td>\n";
      echo "</tr>\n";

    $i++;
  }

  echo "</table>\n";
?>
<br><br>
        </p>

    </fieldset>
    </form>
</div><br>


<div id="rahmen">
    <fieldset>
    <legend>Up- & Downloadrechner</legend>
<p style="margin: 20px 0px; color: #FFFFFF;">Hier findet ihr einen kleinen "Up- &  Downloadrechner". Mit diesem Rechner könnt ihr vor dem Upload die ungefähre Ladezeit einer Datei ermitteln.</p><center><input name="B1" value="Up- &amp; Downloadrechner" onclick=
                    "NewWindow('popup.html','mypopup','700','500','center','front');" type=
                    "button"><br><br></center>
  </fieldset>
    </form>
</div><br>
<div id="rahmen">
    <form name="FileSend" id="FileSend" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?aktion=senden" enctype="multipart/form-data" onsubmit="showWaitMessage();">
    <fieldset>
    <legend>Neuer Upload</legend>
        <p style="margin: 20px 0px; color: #FFFFFF;">Die mit * (Stern) gekennzeichneten Felder sind "Pflichtfelder" und sind für einen fehlerfreien Datei-Upload zwingend erforderlich. Der Upload kann je nach Verbindungsgeschwindigkeit mehrere Minuten in Anspruch nehmen. Bitte das Fenster in dieser Zeit NICHT schließen, da sonst der Upload unterbrochen wird!<br><br></p>
        <label for="admin_passwort">Passwort*:</label><input type="password" name="admin_passwort" id="admin_passwort" />
        <label for="mail_text">Nachricht:</label><textarea name="mail_text" id="mail_text"><?php echo $_POST['mail_text']; ?></textarea>
        <label for="datei">Datei für den Upload: <?php UploadLimit(); ?></label><input type="file" name="datei" id="datei" size="50" class="file" /><br /><font color="#FFFFFF">Erlaubte Dateitypen: <br>zip, rar, 7z, pdf, jpg, jpeg, mp3, wav, doc, xls, html, htm, ufo</font><br><br><br>

<p><font color="#FFFFFF">Die Upload-Geschwindigkeit ist abhängig von der Internetverbindung. Dateien mit mehreren MB (50, 100 oder mehr) dauern selbst mit DSL seine Zeit!
Auch wenn es den Anschein macht, das sich nichts mehr tut, bitte abwarten bis eine Rückmeldung im oberen Bereich unter "Upload Meldungen" erscheint.<br></font></p>


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name="send_file" id="send_file" value="Upload & eMail senden" class="button" onClick="return checkForm();" />

    </fieldset>
    </form>
</div><br><br>

<div id="waitingDiv" style="display:none">
<div id="rahmen">
    <fieldset>
    <legend>Bitte warten...</legend>
    <br>
            <center><img src="progressbar.gif"><br><br></center><p><hr noshade size="1"><br><font color="#FFFFFF" size="2">Die Upload-Geschwindigkeit ist abhängig von der Internetverbindung. Dateien mit mehreren MB (50, 100 oder mehr) dauern selbst mit DSL seine Zeit! Bitte abwarten bis eine Rückmeldung unter "Upload Meldungen" erscheint.</font></p><p style="margin: 20px 0px; color: #FFFFFF;">Zur Kontrolle findet ihr hier einen kleinen "Up- &  Downloadrechner". Der Rechner wird in einem Pop-Up geöffnet. Bitte den Pop-Up Blocker für diese Funktion kurzzeitig deaktivieren.</p><center><input name="B1" value="Up- &amp; Downloadrechner" onclick=
                    "NewWindow('popup.html','mypopup','700','500','center','front');" type=
                    "button"><br><br></center></div><br>
</fieldset>
    </form>
</div><br>

</body>
</html>

Nur mal zur Klarstellung: Wenn du eine %-Anzeige oder ähnliches vorhast, ist das mit PHP so nicht möglich.

Bei dir müsste dein Codeschnipsel hinter $DateiNameNeu = strtr( strtolower( $_FILES[‘datei’][‘name’] ), $ersetzen ); stehen, wobei $datei bei mir durch $DateiNameNeu dann ersetzt werden müsste. Eventuell auch noch den Pfad anpassen.

MfG
myPages

Hallo,

habe das jetzt mal versucht einzusetzen, bekomme aber dann eine Fehlermeldung:

Parse error: syntax error, unexpected T_ELSEIF in C:\Programme\xampp\htdocs\testserver\index.php on line 235

Ich vermute mal das ich das noch nicht richtig eingesetzt habe. Ist nicht so ganz einfach das zu durchschauen finde ich. Das muß aber direkt hinter: $DateiNameNeu = strtr( strtolower( $_FILES[‘datei’][‘name’] ), $ersetzen ); geschrieben werden oder was muß ich da noch beachten? Welcher Pfad ist denn gemeint?

bei: if (@move_uploaded_file( $_FILES[‘datei’][‘tmp_name’], $DateiNameNeu ))
{
könnte man doch sicherlich eine Pfadangabe zum Ordner machen, wo die Datei upgeloadet werden soll, aber wie binde ich das entsprechend ein?

Also das mit dem Uploadbalken und der %-Anzeige hab ich schon nach geschaut das es nicht funktioniert. Ich wollte einfach in der Zeit des aktiven Uploads eine Gif-Grafik mit etwas Text anzeigen lassen und das Formular komplett ausblenden. Wenn der Upload abgeschlossen ist, dann soll das Formular wieder eingeblendet werden. Das sollte zumindest laut “Google” funktionieren nur leider geht das nicht wirklich. Hab den folgenden Code dafür verwendet:

[code][/code]

[code]

Bitte warten...




Die Upload-Geschwindigkeit ist abhängig von der Internetverbindung. Dateien mit mehreren MB (50, 100 oder mehr) dauern selbst mit DSL seine Zeit! Bitte abwarten bis eine Rückmeldung unter "Upload Meldungen" erscheint.

Zur Kontrolle findet ihr hier einen kleinen "Up- & Downloadrechner". Der Rechner wird in einem Pop-Up geöffnet. Bitte den Pop-Up Blocker für diese Funktion kurzzeitig deaktivieren.




[/code]

Wäre das so richtig? Weil funktionieren tut es leider nicht wirklich weil die Grafik gar nicht angezeigt wird sondern nur eine komplett leere Seite. Der Upload läuft aber. Bitte nochmals um etwas Hilfe…

Nabend nochmal,

so also das mit dem Dateinamen überprüfen habe ich nun erfolgreich einbinden können. Muß sagen PHP ist nicht leicht zu verstehen, zumindest tue ich mich noch relativ schwer damit. Naja egal jeder kleine Schritt ist zumindest mal ein Erfolg. :p

Trotzdem hab ich noch ein paar Probleme. Ich würde gerne die Fehlermeldung der Dateiendungsprüfung in die dafür vorgesehene Zeile einfügen. Habe es folgendermaßen probiert:

// Pruefen ob die Dateiendung erlaubt ist $UploadDateiEndung = array_pop( explode( ".", strtolower( $_FILES['datei']['name'] ) ) ); if(!in_array( $UploadDateiEndung, $Dateiendungen )) { $EndungERROR = true; }

Dort wo die Error-Meldung erscheinen sollte habe ich folgendes eingegeben:

// Upload-Meldungen if ($EndungERROR) echo '<h3><span class="hinweis">F E H L E R:</span> <font color="#FFFFFF">Unerlaubte Dateiendung!</font></h3><br>';

Allerdings erscheint keine Fehlermeldung, sondern die unerlaubte Datei wird einfach hochgeladen obwohl als bsp. eine .exe Datei nicht erlaubt ist. Was mache ich da falsch?

Wo und wie muß ich die Angabe für ein anderes Verzeichnis angeben, wo ich die Dateien hochladen möchte? Ich denke daß das irgendwie noch unter:

if (@move_uploaded_file( $_FILES[‚datei‘][‚tmp_name‘], $DateiNameNeu ))
{

eingegeben werden muß, aber wie???

Mir ist aufgefallen, das die Sache mit der Upload-Grafik wohl eine Javascript Geschichte ist. Wie muß ich das Script denn einbinden, damit das auch funktioniert?

Moin,

machen wir erstmal eins nach dem anderen :wink:

move_uploaded_file($datei, $ziel) hat zwei Variablen. Die erste ist einfach der Dateiname, was bei dir $_FILES… darstellt, das andere ist das Ziel. Also wohin die Datei hinkommen soll. Du müsstest bei dir im Prinzip nur $DateiNameNeu durch “./ordnername/”.$DateiNameNeu ersetzen.

Der Code für die Fehlermeldung ist eigentlich korrekt.

Ich würde auf JavaScript verzichten und bei dem Upload eine Ausgabe hinzufügen. Was macht er denn z.B. wenn du vor // Mail Header echo “Test”; hinschreibst?

Das Problem ist halt, dass JavaScript clientseitig läuft und erst reagieren wird, wenn der Server etwas zurückliefert. Ich bin leider nicht so bewandert mit JS, aber könnte eine Möglichkeit sein :wink: – aber da würde ich vielleicht nochmal jemanden fragen, der sich mit JS wirklich auskennt :smiley:

MfG
myPages

Hallo myPages,

erst mal vielen Dank für die tolle Hilfestellung. So langsam kriege ich das hin und verstehe es auch. So das verschieben in ein anderes Verzeichnis klappt nun auch wunderbar, allerdings habe ich noch ein zusätzliches Script eingebaut um den Inhalt des Ordners anzeigen zu lassen. Problem dabei ist nun, das dieser nicht angezeigt wird, weil ich ja bei move_uploaded das Zielverzeichnis geändert habe. Jetzt stellt sich für mich die Frage wo setze ich nun den Pfad des neuen Ordners für diese Anzeige?

[code]<?php
// tabelle
echo “<table border=“0” cellspacing=“0” cellpadding=“0”>\n”;

echo “<tr style=“font-weight:bold;”>\n”;
echo " <td style=“width:200px;color:#ffffff;font-size:10pt;”>Dateiname\n";
echo " <td style=“width:200px;color:#ffffff;font-size:10pt;”>Größe in KB\n";
echo " <td style=“width:200px;color:#ffffff;font-size:10pt;”>Upload am\n";
echo “\n”;

// fuer alle .jpg bilder zB sowas:
// foreach(glob(".jpg") as $datei) {
foreach(glob("{.zip,.rar,.7z,.pdf,.jpg,.jpeg,.mp3,.wav,.doc,.xls,.html,.htm}", GLOB_BRACE) as $datei) {

// groesse
$groesse = filesize($datei)/1024;

// letzte aenderung
$aenderung = date("d.m.y, H:i:s", filemtime($datei));

if($i%2 == 0) {
  echo "<tr>\n";
} else {
  echo "<tr style=\"background-color:#000000; color:#000000\">\n";
}
  echo "  <td style=\"width:200px;font-size:8pt;\"><a href=\" " .$datei . "\">" . $datei . "</a></td>\n";
  echo "  <td style=\"width:200px;font-size:8pt;color:#ffffff;\">".round($groesse, 2)."</td>\n";
  echo "  <td style=\"width:200px;font-size:8pt;color:#ffffff;\">" . $aenderung . "</td>\n";
  echo "</tr>\n";

$i++;

}

echo “\n”;
?>[/code]

Wenn man statt Javascript auch eine Ausgabe verwenden kann, welche während des aktiven Uploads erscheint, kann man dort dann auch eine Grafik zur Anzeige einsetzen? Wie müßte denn sowas aussehen?

Vor welchem //MailHeader müßte ich diese echo “Test”; hinschreiben, damit das ganze während des Uploads erscheint? Habe //MailHeader ja mehrfach da stehen.

Das mit der Prüfung der gültigen Dateiendung funktioniert mit meinem angepassten Code und der Fehlermeldung nach wie vor nicht. Es wird immer die nicht erlaubte Datei trotzdem erfolgreich raufgeladen. Ursprünglich sah das mal so aus, was auch diese Prüfung gemacht hat und die Datei wurde dann nicht raufgeladen:

// Pruefen ob die Dateiendung erlaubt ist $UploadDateiEndung = array_pop( explode( ".", strtolower( $_FILES['datei']['name'] ) ) ); if(!in_array( $UploadDateiEndung, $Dateiendungen )) { die( "Die angehängte Datei hat eine nicht erlaubte Dateiendung!" ); }

Also ich denke irgendwas mache ich noch falsch.

Ich mein den // Mail Header nach if(move_uploaded_file…)

Für die Dateien, würde ich mal ausprobieren, was foreach("./ordner/".glob(".jpg") AS $datei) bringt.

die(); sorgt dafür, dass das Script komplett abgebrochen wird, d.h. danach würde nichts mehr ausgeführt werden (das Script ist somit “gestorben”). Der Text in den Klammern wird als Meldung angezeigt.

MfG
myPages

Aber wenn die() nur das komplette script abbricht, dann sollte ich das doch durch eine Fehlermeldung wie ich es probiert hatte ersetzen können oder nicht? Warum wird dann eine Datei mit einer nicht erlaubten Dateiendung hochgeladen, obwohl nur diese Meldung an eine andere Stelle gesetzt worden ist?

Wo ist da der Zusammenhang?

Vieleicht sollte ich vor dem posten mal richtig lesen. Klar gibt es da einen Zusammenhang wenn die() das Script kompltt abbricht. Ersetze ich diese Aktion nur mit einer Fehlermeldung wird ja nichts abgebrochen und wird weiterausgeführt. Eigentlich logisch. o.0

Gibt es alternativen dazu das bestimmte Dateien nicht hochgeladen werden? Kann man bestimmte Dateien auch noch anders ausschliessen?

Moin,

ja jede Datei verfügt auch noch über einen MIME-Type, womit man Dateien identifizieren kann, da jede einen anderen MIME-Typ besitzt.

Allerdings ist das Ganze auch nicht zu 100% sicher, man sollte also sowohl MIME-Type bestimmen und mit der Endung abgleichen. Sowas wie *mp3.txt wird dann vermutlich auch nicht mehr möglich sein, da der MIME-Type afaik sich nicht durch bloße Umbenunng ändert.

Interessanterweise kann man mit PHP die Funktion die Funktion getimagesize() nutzen, um den MIME-Type zu bestimmen ($var[4]).

MfG
myPages

Hallo,

hab mir gerade mal überlegt ob man zusätzlich zu diesem die() -Befehl noch was mit anhängen kann. Der die() Befehl unterbricht das ganze Script und gibt nur den entsprechenden Satz aus. Kann man anstelle des Satzes auch eine HTML oder PHP Datei einbinden, welche nach dem die() angezeigt wird?

Wenn ja wie muß ich diese einbinden? Finde zwar ziemlich viel über diesen die() Befehl aber nicht wie und ob man eine HTML-Datei oder PHP-Datei als Fehlerausgabe nutzen kann.

Ist das irgendwie machbar? Oder kann man das komplette Script neustarten und eine entsprechende Fehlermeldung ausgeben?

Geht das irgendwie?

ja, anstatt den Ausgabestring kannst du einfach

die(include("error.php"));schreiben. in der error.php kannst du dann auch html benutzen.

Ja super genau danach habe ich gesucht. Danke @ hummer für diesen Tip. Habe auch schon in Richtung include gedacht aber wusste nicht wie ich das einbinden kann.

Nach wie vor habe ich aber noch das Problem mit der wait-Grafik, welche ich während des aktiven Uploads einblenden möchte. Dabei soll das komplette Formular ausgeblendet werden die wait-Grafik oder PHP bzw. HTML Datei angezeigt werden und wenn der Upload fertig ist, soll wieder das Formular angezeigt werden.

Wie gesagt soll nur was für’s Auge sein, damit der User sieht das was passiert. Hatte schon überlegt das auch irgendwie zu includen aber bisher noch keinen richtigen Ansatz gefunden. Wären da noch ein paar Tipps möglich?

Moin,

das Schema dürfte wohl so aussehen:

Formular --> Senden
--> PHP-Seite:
      --> Ausgabe d. Grafik
      --> Starten des Uploads

Dann sollte der PHP Interpreter zuerst die Grafik anzeigen und dann den Upload starten, sodass deine Grafik angezeigt wird. Da muss man auch nicht sonderlich mit include(); arbeiten, sondern einfach ne simple Ausgabe erzeugen :wink:

MfG
myPages

Ähm… das sagt sich so einfach. Ne simple Ausgabe erzeugen. :whata:
Wie muß diese denn aussehen bzw. wo wird diese dann eingesetzt? Hinter onClick="return checkForm();? Wie sieht sowas aus so als Beispiel?

Hab ja inzwischen schon einiges verstanden und gelernt in Sachen PHP durch die Hilfe hier aber wie und wo ich entsprechnede Sachen einsetzen muß das ist für mich noch nicht ganz verständlich. Könntest du mir nochmal ein Beispiel dafür geben?

das wird nur mit Javascript möglich sein.
Also im Formular wird beim klicken ein Javascript ausgeführt, welches das Formular ausblendet und die Grafik einblendet.

Beispiel:

[code]

uploading...
[/code] JS:[code][/code]

wird dann so ähnlich aussehen wie das hier, nur wird dann das ganze Formular ausgeblendet und keine Fortschrittsanzeige.

Mit Javascript hatte ich es vorher mal ausprobiert. In meinem ersten Post ist ja der komplette Queltext zu sehen, allerdings wurde mir die Grafik zwar im firefox angezeigt aber im IE konnte man gar nichts sehen, noch nicht mals das Formular und ich brauche etwas, was in beiden Browsern funktioniert.

Ich werde mal den von dir geposteten Code versuchen zu integrieren. Vieleicht klappt das ja.

Aaaaah… manchmal ist man einfach nur blind… :astonished:

Das hätte schon viel länger funktionieren können, wenn ich das an die richtige Stelle gesetzt hätte. Jetzt ist es logisch, das mir keine Grafik angezeigt wurde. Ich hatte das unter dem Formular eingebaut, d. h. es wurde auch mit ausgeblendet durch die Funktion ‚none‘. Habe das jetzt vor dem Formular eingebaut und nun erscheint das auch. Man man man…

Man lernt halt nie aus… :smiley:

Nichts desto trotz habe ich aber noch ein Problem oder ich sehe den Fehler nur mal wieder nicht :sunglasses:

Habe zwei Buttons. Einen zum senden und einen damit ich das Formular löschen kann. Allerdings sind diese untereinander. Hätte die aber lieber nebeneinander. Hier der Code:

<input type="submit" name="send_file" id="send_file" value="Upload starten" class="button" onClick=" return confirm('Sind Sie sicher?'); return showbar(); return checkForm();" /><input type="reset" value="Eingaben löschen" class="button" onClick="reset();" />

Hab ich da was falsch gemacht oder fehlt da einfach nur etwas?

Ist das normal das im IE meine animierte Gif-Grafik nicht läuft? Im IE bewegt sich meine Progressbar nicht nur im Firefox :whata: