Ankündigung

Einklappen
Keine Ankündigung bisher.

Was darf nicht in einem Dateinamen stehen und wie gehts weg?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Was darf nicht in einem Dateinamen stehen und wie gehts weg?

    Hallo!

    Also ich will auf meinem Server eine Datei speichern. Der Titel der Datei wird per GET-Variable übergeben. Jetzt muss ich diese Variable ja aber noch vor dem Speichern der Datei mit dem Namen bearbeiten. Auf was muss ich da alles achten? Umlaute, Leerzeichen....?

    Und meine 2. Frage wäre, welche Funktion ich da brauche um diese Fehlerherde zu finden und sie so zu ändern, dass es kein Problem gibt.

  • Gast-Avatar
    Ein Gast antwortete
    Dann biete ihm doch selber die Lösung an?
    Nicht ohne mehr Infos.

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Dann biete ihm doch selber die Lösung an?

    PHP-Code:
    <?php
    $dateiname 
    preg_replace('/[^a-zA-Z0-9_]/''_'$dateiname);
    ?>
    Keine Ahnung ob der alle Zeichen ersetzt oder nur eines.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Und was ist zB mit / und ggf \ ?

    Und nochmals die Frage: Was für verstaubte Betriebssysteme kommen denn zum Einsatz, dass äöüß ein Problem sind?

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    str_replace(array('ä', 'ö', 'ü', 'ß', ' '), array('ae', 'oe', 'ue', 'ss', '_'), $dateiname);

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von Bruchpilot
    Also am Anfang ist $_POST['titel'] = "hallölälu du". Leider kommt das am Ende genau so raus, also die ö,ä, , etc. werden nicht geändert.
    addslashes() kümmert sich nicht um äöü. Kann man auch im Handbuch nachlesen: http://de2.php.net/addslashes
    Ja, das macht doch theretisch die 2. Zeile, aber der Code wurde mir ja hier im Forum so ans Herz gelegt. Wie muss er anders lauten?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Also am Anfang ist $_POST['titel'] = "hallölälu du". Leider kommt das am Ende genau so raus, also die ö,ä, , etc. werden nicht geändert.
    addslashes() kümmert sich nicht um äöü. Kann man auch im Handbuch nachlesen: http://de2.php.net/addslashes

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Dann ist $_POST['title'] eben auch schon leer...

    Edit: Ups, hab diese Seite überlesen.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von xabbuh
    Steht in $_POST['title'] denn überhaupt etwas? Welche Ausgabe erhälst du mit var_dump($_POST)? Ist display_errors aktiviert? Steht error_reporting auf E_ALL?
    OK, also die Variable hat einen Wert und der wird jetzt auch ausgegeben. Also am Anfang ist $_POST['titel'] = "hallölälu du". Leider kommt das am Ende genau so raus, also die ö,ä, , etc. werden nicht geändert.

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    Steht in $_POST['title'] denn überhaupt etwas? Welche Ausgabe erhälst du mit var_dump($_POST)? Ist display_errors aktiviert? Steht error_reporting auf E_ALL?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von Connar
    also erstmal:
    warum machst du "" vor und nach der $_POST['title']. Des bringt doch garnix ...

    zweitens:
    Schneller geht es du machst das mit einem Befehl:

    PHP-Code:
    $dateiname addslashes($_POST['title']);
    str_replace(array('ä''ö''ü''ß'' '), array('ae''oe''ue''ss''_'), $dateiname); 
    Das müsste eigentlich funktionieren ..


    MFG Connar
    So, also ich habs jetzt so probiert, wie du es sagst.

    Leider hat er bereits damit Probleme:

    $dateiname = addslashes($_POST['title']);

    Die Variable $dateiname ist in diesem Fall dann schon leer.

    Einen Kommentar schreiben:


  • Connar
    antwortet
    also erstmal:
    warum machst du "" vor und nach der $_POST['title']. Des bringt doch garnix ...

    zweitens:
    Schneller geht es du machst das mit einem Befehl:

    PHP-Code:
    $dateiname addslashes($_POST['title']);
    str_replace(array('ä''ö''ü''ß'' '), array('ae''oe''ue''ss''_'), $dateiname); 
    Das müsste eigentlich funktionieren ..


    MFG Connar

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    str_replace liefert eine Zeichenektte zurück. Diese musst Du benutzen.

    Was für seltsame (alte?) Betriebsysteme/grafische Oberfläschen verwendet Ihr denn alle, dass deutsche Umlaute Schwierigkeiten machen?

    Was ist mit / bzw \ ?
    Was mit Fragezeichen, weiteren whitespace usw.?
    Dagegen sind die Umlaute doch ein Witz.

    Wenn es sicher sein soll, würde ich eher eine Liste erlaubter Zeichen benutzen und preg_replace alle nicht in dieser Liste enthaltenen Zeichen ersetzen lassen.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von HK
    stimmt, da hab ich in der Schnelle gar nicht dran gedacht. Ich nehm auch immer str_replace() da es für meine Bedürfnisse meistens ausreicht bzw auch, wie du schon gesagt hast, von der Performance am Geeignetesten ist.
    OK, also ich habs jetzt so:

    PHP-Code:
    $dateiname "".$_POST['titel']."";
    str_replace('ä''ae'$dateiname);
    str_replace('ö''oe'$dateiname);
    str_replace('ü''ue'$dateiname);
    str_replace('ß''ss'$dateiname);
    str_replace(' ''_'$dateiname); 
    Nur leider macht der das nicht wirklich.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    stimmt, da hab ich in der Schnelle gar nicht dran gedacht. Ich nehm auch immer str_replace() da es für meine Bedürfnisse meistens ausreicht bzw auch, wie du schon gesagt hast, von der Performance am Geeignetesten ist.

    Einen Kommentar schreiben:

Lädt...
X