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

Fehler bei Upload

Status
Für weitere Antworten geschlossen.

FleyerShaver

Neues Mitglied
Ich hab folgenden Code:
PHP:
if($_GET['upload'] == "save")
{
echo 'Bitte alle Pflichtangaben ausfüllen';
    $str_file_ext = substr( strtolower( strrchr($_FILES['datei']['name'], '.') ), 1 );
    // Array der zulaessigen Endungen
    $idxarr_allowed_ext = array('tar.gz', 'zip', 'rar', 'gz');
    // Ueberpruefung der Dateiendung
    if ( empty($str_file_ext) OR !in_array($str_file_ext, $idxarr_allowed_ext) ) {
        echo "Unzulaessige Dateiendung! Die Dateiendung darf nur .gz,.tar.gz,.zip oder .rar sein!";
        exit;
    }
Leider gibt der immer Unzulässige Dateiendung aus igal ob ich eine txt-Datei oder eine zip Datei uploade
 
Hallo,

nimm mal den substr raus, damit schneidest du den ersten Buchstaben ab. Falls es das nicht war geb doch mal $str_file_ext aus.


N43
 
PHP:
function endung($name)
{
    if(preg_match("/\./", $name))
    {
        $name = explode(".", $name);
        $z = count($name) - 1;
        return $name[$z];
    }
    else
    {
        return $name;
    }
}

kann man auch verbessern wenn man kontrolliert ob hinter dem letzten punkt auch noch inhalt ist aber ritd wohl so reichen... ist halt mit tar.gz n bissel schlecht aber GZ reicht ja auch ;)
 
Hallo,

hab's grad mal ausprobiert, substr muss doch drinne bleiben. Wenn ich nen festen String verwende geht's. Also am besten $str_file_ext und $_FILES ['datei']['name'] ausgeben.


@Slibbo: Der reguläre Audsruck und explode sind 'n wengchen überdimensioniert für das Problem.;-)
 
Sorry wenn ich noch mal frage aber wie genau muss ich das RegEx einbauen. Ich hab es jetzt so gemacht es funktioniert aber nicht:
PHP:
    $files = $_FILES['datei']['name'];
    $str_file_ext = endung($files);
    // Array der zulaessigen Endungen
    $idxarr_allowed_ext = array('tar.gz', 'zip', 'rar', 'gz');
    // Ueberpruefung der Dateiendung
    if ( empty($str_file_ext) OR !in_array($str_file_ext, $idxarr_allowed_ext) ) {
        echo "Unzulaessige Dateiendung! Die Dateiendung darf nur .gz,.tar.gz,.zip oder .rar sein!";
        exit;
    }
 
Probier es so
PHP:
$files = $_FILES['datei']['name'];
// Ueberpruefung der Dateiendung
if (!preg_match('%^.*\.(zip|rar|gz|tar\.gz)$%i',$files)) 
{
  echo "Unzulaessige Dateiendung! Die Dateiendung darf nur .gz,.tar.gz,.zip oder .rar sein!";
  exit;
}
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben