PHP-Skript ergänzen und in HTML-Seite einbauen

Hallo,

zugegebenermaßen bin ich unbescheiden, aber ich kann halt nicht viel mehr, als PHP in HTML einbauen.

Ich möchte eine einfache Seite erstellen, auf der man in ein Eingabefeld Dateinamen einträgt, die in Kleinbuchstaben und in zulässige Zeichen (unzulässig ? " : | \ / * + & und Leerzeichen sowie ä ö ü ß), also am besten in _ bzw. ae oe ue ss gewandelt und ausgegeben werden.

Das habe ich gefunden, aber das reicht natürlich nicht. Was ich vor allem nicht kann, ist die Übergabe des Inputs an das Skript.

Viel fehlt hoffentlich nicht. Fragen kostet ja bekanntlich nichts und nicht antworten auch nicht - aber auf Antworten freue ich mich.

Vielen Dank im Voraus,

Anselm

Moin!

Ich möchte eine einfache Seite erstellen, auf der man in ein
Eingabefeld Dateinamen einträgt

Das heißt, Du brauchst eine Seite, die ein Formular beinhaltet und als Ziel (action) ein Script, das die Eingaben auswertet. Das kann man in der selben Datei machen.

die in Kleinbuchstaben und in
zulässige Zeichen gewandelt und ausgegeben werden.

Dafür hast Du ja schon eine Anleitung.

Was
ich vor allem nicht kann, ist die Übergabe des Inputs an das
Skript.

Das ist HTML, nicht PHP.
http://de.selfhtml.org/navigation/html.htm#formulare

Mehr dazu im HTML-Forum.

Liebe Grüße,
-Efchen

Mahlzeit!

Ich möchte eine einfache Seite erstellen, auf der man in ein
Eingabefeld Dateinamen einträgt

Das heißt, Du brauchst eine Seite, die ein Formular beinhaltet
und als Ziel (action) ein Script, das die Eingaben auswertet.
Das kann man in der selben Datei machen.

Ja. Ich kann das:

<?php ...
?\> Und ich suche, wodurch die je drei Pünktchen ersetzt werden müssen. > > die in Kleinbuchstaben und in > > zulässige Zeichen gewandelt und ausgegeben werden. > > > Dafür hast Du ja schon eine Anleitung. Für die Kleinbuchstaben nicht. > > Was > > ich vor allem nicht kann, ist die Übergabe des Inputs an das > > Skript. > > > Das ist HTML, nicht PHP. Hm. Das ist doch die Schnittstelle zwischen HTML und PHP. Und was ich in HTML machen muss, um ein Eingabefenster zu erzeugen, weiß ich. Meine Frage siehe oben. > [http://de.selfhtml.org/navigation/html.htm#formulare](http://de.selfhtml.org/navigation/html.htm%23formulare) Da finde ich keine Antwort. > Mehr dazu im HTML-Forum. Wirklich? Tut mir Leid, ich bin nicht zu faul zum Denken, aber so komme ich nicht weiter. Gruß, Anselm

usw.

Streng genommen fehlen da und , aber das ist ein anderes Thema.

<?php :...
?\> Und ich suche, wodurch die je drei Pünktchen ersetzt werden müssen.

Durch etwas mehr als drei Zeilen. Außerdem muss das oben drüber und außen drum rum. Du weißt, wie die Kommunikation abluft?

Browser fordert Seite beim Server an.
Server liefert Seite mit Formular aus.
Nutzer trägt was ein.
Nutzer schickt das Formular ab.
Browser fordert neue Seite an, übergibt dabei die Formulareingaben.
Server sieht, dass die Anforderung ein PHP-Script aufruft und startet den Interpreter.
PHP erzeugt eine neue Seite.
Server schickt die Seite an den Browser.

Das heißt, Du musst - wenn Du das Formular und die Auswertung dazu ins selbe File schreiben willst - schon am Anfang des Scripts abfragen, ob das Script mit Formulardaten aufgerufen wird oder ohne. Wenn mit, dann wertest Du das Formular aus, wenn ohne, musst Du das leere Formular anzeigen.
Du kannst programmieren? Ist nicht bös oder herablassend gemeint, es hört sich nur ein bisschen so an, als würde Dir diese ganze Logik fehlen und Du nicht wirklich in der Lage sein, das selbst auf die Beine zu stellen.
Ich muss ja nur wissen, wo ich anfange zu beschreiben. Scripts komplett schreiben werde ich aber nicht.

die in Kleinbuchstaben und in
zulässige Zeichen gewandelt und ausgegeben werden.

Dafür hast Du ja schon eine Anleitung.

Für die Kleinbuchstaben nicht.

Nicht Dein Ernst!? Du hast so ne schöne Anleitung und es hapert an den Kleinbuchstaben? Kleinbuchstaben sind /[a-z]/ Logisch, oder? :smile: Ganz ohne Ahnung, was eine Regular Expression ist, hättest Du aber wenigstens 26 Zeilen mit /a/ usw. hinbekommen können.

Hm. Das ist doch die Schnittstelle zwischen HTML und PHP.

Naja, man kann das schon in einen HTML- und einen PHP-Teil auftrennen. HTML macht die Übergabe an den Server, PHP nimmt die Daten entgegen.

Also fehlt Dir das Entgegennehmen der Daten, nicht das Übergeben.
Schau mal nach den Variablen $_POST oder $_GET (oder auch $_REQUEST). Da stehen die übergebenen Werte aus dem Formular drin.

http://de.selfhtml.org/navigation/html.htm#formulare

Da finde ich keine Antwort.

Weil Du die Frage falsch gestellt hattest. :smile:

Mehr dazu im HTML-Forum.

Wirklich?

Nein.

Tut mir Leid, ich bin nicht zu faul zum Denken, aber so komme
ich nicht weiter.

Hmmm…Google-Suche nach „Formular auswerten PHP“ liefert mir als ersten Treffer gleich ein Tutorial, wie man sowas macht:
http://www.phpbox.de/php_tutorials/formularversenden…

Konnte ich Dich jetzt in die richtige Richtung stupsen?

Liebe Grüße,
-Efchen

Hallo,

zugegebenermaßen bin ich unbescheiden, aber ich kann halt
nicht viel mehr, als PHP in HTML einbauen.

Ich möchte eine einfache Seite erstellen, auf der man in ein
Eingabefeld Dateinamen einträgt, die in Kleinbuchstaben und in
zulässige Zeichen (unzulässig ? " : | \ / * + & und
Leerzeichen sowie ä ö ü ß), also am besten in _ bzw. ae oe ue
ss gewandelt und ausgegeben werden.

das serverseitig zu prüfen
mit
bei ,
nicht zu verwechseln mit
ist.

<?php $dateiname = '';
// Dateiname von POST Daten if (isset($\_POST['Dateiname'])) { $dateiname = strtolower($\_POST['Dateiname']); // nur A-z0-9 $zeichenfalsch = array('ä','ö','ü','ß'); $zeichenneu = array('ae','oe','ue','sz'); $dateiname = str\_replace($zeichenfalsch,$zeichenneu,$dateiname); // alle zeichen löschen die nicht A-z0-9 $zeichenweg = '/[^A-z|0-9)]/'; $zeichenneu = "" ; $dateiname = preg\_replace($zeichenweg,$zeichenneu,$dateiname); } echo $dateiname; ?\> [Beispiel Online](http://legioneuropa.le.ohost.de/test/php/form_input/input-masked.php) > [Das](http://www.selfphp.de/code_snippets/code_snippet.php?id=118) habe ich gefunden, aber das reicht natürlich nicht. Was > ich vor allem nicht kann, ist die Übergabe des Inputs an das > Skript. > > Viel fehlt hoffentlich nicht. Fragen kostet ja bekanntlich > nichts und nicht antworten auch nicht - aber auf Antworten > freue ich mich. > > Vielen Dank im Voraus, > > Anselm fals du die datei selber laden willst ist das ein ganz anderes Thema , sie [Dateiupload mit PHP](http://www.php.net/manual/de/features.file-upload.post-method.php)

usw.

Streng genommen fehlen da und , aber das
ist ein anderes Thema.

<?php ::...
?\>

wenn das so streng genommen fehlt, dann schreibs doch hin .

echt super, den verbesserer machen und dann nicht verbessern , was für ne weillt nennst du eigentlich dein eigen .

Hi,

Ich möchte eine einfache Seite erstellen, auf der man in ein
Eingabefeld Dateinamen einträgt, die in Kleinbuchstaben und in
zulässige Zeichen (unzulässig ? " : | \ / * + & und
Leerzeichen sowie ä ö ü ß), also am besten in _ bzw. ae oe ue
ss gewandelt und ausgegeben werden.

eine Beschränkung auf Kleinbuchstaben ist unnötig. Für den Rest habe ich dieses Script entwickelt:

function secureURL($filename=false) {
$filename = ($filename===false) ? ‚.‘ : trim($filename);
$x = ‚bin‘;

$ein = array(‚ä‘, ‚ö‘, ‚ü‘, ‚ß‘, ‚Ä‘, ‚Ö‘, ‚Ü‘, ‚&‘,’§’, ’ ‚,‘%20’,’%’,’’,’|’,’/’,’:’,’?’,’*’,’"’,chr(92),chr(10),chr(13));
$aus = array(‚ae‘,‚oe‘,‚ue‘,‚ss‘,‚Ae‘,‚Oe‘,‚Ue‘,’+’,‚Par.‘,’_’,’_’, ‚~‘,’~’,’~’,’~’,’~’,’~’,’~’,’~’,’~’,’~’, ‚‘, ‚‘);
$filename = str_replace($ein, $aus, $filename);

$filename = trim($filename, „.“);
if(!$filename) $filename = date(„d-m-Y_H-i-s“).’.’.$x;

$ext = strtolower(substr($filename, strrpos($filename, ‚.‘)+1));
$test = array(‚php‘,‚shtm‘,‚htm‘,‚class‘,‚cgi‘,‚fcgi‘,‚pl‘,‚py‘,‚jsp‘,‚asp‘,‚dll‘);
for ($i=0; $i

Gruß
Ingo

hi,

da ist aber lacta’s version x-klassen besser!!

  1. wegen lowercase
  2. regexp entfernt alles, was nicht a-z oder 0-9 ist

Also warum mit ˜ ersetzen, was unerwünscht ist?

h♥rzlichen Gruß
Nitya

Hi,

da ist aber lacta’s version x-klassen besser!!

  1. wegen lowercase
  2. regexp entfernt alles, was nicht a-z oder 0-9 ist

beides ist nicht erforderlich bei Dateinamen - warum also blockieren oder unnötig verstümmeln?

Also warum mit ˜ ersetzen, was unerwünscht ist?

Meine Funktion wird für Uploads eingesetzt und anhand der Fragestellung könnte der TE solch eine Funktion gebauchen.

Gruß
Ingo

Hi,

da ist aber lacta’s version x-klassen besser!!

  1. wegen lowercase
  2. regexp entfernt alles, was nicht a-z oder 0-9 ist

beides ist nicht erforderlich bei Dateinamen - warum also
blockieren oder unnötig verstümmeln?

wenn unerwünschte Zeichen mit Tilde ersetzt werden … was das?
Dann doch lieber ganz weg damit!

Und generell Zeichen in lowercase für Dateinamen zu verwenden ist auch nicht so verkehrt!

h♥rzlichen Gruß
Nitya

Hi,

wenn unerwünschte Zeichen mit Tilde ersetzt werden … was das?
Dann doch lieber ganz weg damit!

wieso? Die Frage ist doch, was der TE bezweckt.
Immerhin formulierte er: „also am besten in _ bzw. ae oe ue ss gewandelt“.
Es scheint also, dass die Löschung von Zeichen durch Platzhalter gekennzeichnet werden sollen, wobei ich die Tilde hierfür sinnvoller finde und den Unterstrich eher als Ersatz für ein Leerzeichen nehmen würde.

Was er allerdings nicht wollte, dass der Punkt und andere ungefährliche Zeichen gefiltert wird, das Pipe-Zeichen aber durchkommt in dem Script, das Du „x-klassen besser“ findest. :wink:

Und generell Zeichen in lowercase für Dateinamen zu verwenden
ist auch nicht so verkehrt!

Für Leute, die Probleme mit der korrekten Groß-/Kleinschreibung haben sicher.
Wozu dienen überhaupt Dateinamen mit Buchstaben? Man könnte doch auch ganz einfach nur Ziffern nehmen. Sie sollen beschreibenden Charakter haben. Und wenn die Beschreibung für den Verwendungszweck unzulässige Zeichen enthält, sollte man doch versuchen, die Ersetzungen so vorzunehmen, dass die Beschreibung möglichst erhalten bleibt.

Ein vielleicht deutliches Beispiel:
50m²-Höhle des Bären.jpg
-> 50mhoehledesbaerenjpg
-> 50m~-Hoehle_des_Baeren.jpg

Gruß
Ingo

wenn das so streng genommen fehlt, dann schreibs doch hin .

Warum?

echt super, den verbesserer machen und dann nicht verbessern ,
was für ne weillt nennst du eigentlich dein eigen .

Ne weillt? Hä?

Hallo,

das mit den Kleinbuchstaben kann ich durchaus nachvollziehen. Das gewöhnen sich manche Menschen an, die zu viel Windows benutzen und irgendwann verlernen, dass es einen Unterschied zwischen „a“ und „A“ gibt :smile:)) (ist gegen Windoof gerichtet, nicht gegen Nitya).

Aber die Tilde würde ich nicht verwenden, weil die unter Unix für das Homeverzeichnis des Nutzers steht.

Liebe Grüße,
-Efchen

Hallo alle fleißigen Helfer,

ich habe nicht geahnt, welche „Lawine“ ich lostrete. Vielen Dank für alle Antworten. Der Einfachheit halber antworte ich allen gemeinsam.

Zunächst will ich mein Anliegen noch etwas präzisieren: Ich bekomme öfter Dateien per E-Mail zum Hochladen gesandt (was ich allerdings aus mehreren Gründen unbedingt selbst machen muss). Obwohl ich darum gebeten habe, nur Kleinschrift und keine Sonder- und Leerzeichen zu verwenden, bin ich halt immer wieder dran, die Dateinamen manuell zu korrigieren. Und da kam mir gestern die Idee, eine Seite bereitzustellen, in die der Absender seinen Original-Dateinamen einträgt und den „richtigen“ angezeigt bekommt.

Also möglichst der Reihe nach:

  • Beschränkung auf Kleinbuchstaben ist mir wichtig, weil sie unter Windows nicht relevant und unter Linux relevant ist. Weil nicht jeder Absender seine Dateinamen immer gleich groß/klein schreibt, ist mir einheitliche Kleinschreibung wichtig.

  • Die Tilde möchte ich - logisch kaum begründbar - nicht verwenden. Aber ich möchte unzulässige Zeichen umwandeln und nicht wegfallen lassen, das dient der Übersichtlichkeit.

  • Das Skript von alea lacta est enthält die mir so wichtige Verknüpfung von HTML und PHP. Wenn ich das richtig sehe, ist name=„dateinamensenden“ in

beliebig?

Allerdings: Wenn man alles rauswirft, was nicht a-z oder 0-9 ist, wird Anselm.pdf in anselmpdf umgewandelt, was natürlich nicht sein sollte.

  • Ich wollte einen halben Liter Milch und keine Kuh. Vielen Dank für die Angabe von Links, aber ich habe selbst schon emsig gesucht.

So, ich hoffe, alles einigermaßen beantwortet zu haben und mein Anliegen nochmals verdeutlicht zu haben. Wenn nun noch mal jemand in die Tasten greifen will, um meine Wünsche komplett zu erfüllen, bin ich - ausnahmsweise mal - glücklich.

Danke im Voraus,

Anselm

P. S. Der Server von www.wer-weiss-was.de hat mich wiederholt rausgeworfen. Hoffentlich bin ich nicht das Problem. :wink:

Hallo Anselm,

welche Dateitypen/Extensionen akzeptierst Du und willst Du diese auch überprüfen?
Bietet es sich vielleicht an, dass diese in einem select auszuwählen ist.

Ein „Ersatzzeichen“ kannst Du doch hier nach Deinem Belieben bestimmen:

$zeichenneu="";

h♥rzlichen Gruß
Nitya

Hallo Nitya,

welche Dateitypen/Extensionen akzeptierst Du und willst Du
diese auch überprüfen?
Bietet es sich vielleicht an, dass diese in einem select
auszuwählen ist.

Das gibt kaum Probleme; ich kann auf die Prüfung verzichten.

Ein „Ersatzzeichen“ kannst Du doch hier nach Deinem Belieben
bestimmen:

$zeichenneu="";

Ja, kein Problem. Aber die Musterdatei Anselm.pdf heißt dann nicht mehr anselmpdf, sondern anselm_pdf. $zeichenweg wird doch wohl grundsätzlich in $zeichenneu umgewandelt. Nun habe ich $zeichenweg um den Punkt ergänzt:

$zeichenweg = '/[^A-z|0-9|.)]/';

Aus „Ärger geht’s nimmer.PDF“ wird „_rger_geht_s_nimmer.pdf“. Wünschen würde ich mir „aerger_geht_s_nimmer.pdf“.

Tut mir Leid, aber ohne noch ein bisschen Nachhilfe geht es leider nicht.

Dank und Gruß, Anselm

Hi,

jou … im Grunde ist das dann Anselms Enscheidung.
Aber wie ich oben geschrieben habe, kann er das „Ersatzzeichen“ bestimmen.
Nimmt er „_“ dann sieht es so aus:

50m²-Höhle des Bären.jpg

50m__hoehle_des_baeren.jpg

Ein „schlauer“ Nutzer wird dann wohl im Laufe der Jahre erkennen, dass der statt ² lieber 2 nehmen sollte.

Wegen „|“ … stimmt … besser so: /[^a-z0-9]/


function sauber( $dname ) {
$nein = array(‚ä‘,‚ö‘,‚ü‘,‚ß‘);
$ja = array(‚ae‘,‚oe‘,‚ue‘,‚ss‘);
$dname = str_replace( $nein, $ja, $dname );
$patt = ‚/[^a-z0-9]/‘;
$repl = „_“ ;
return preg_replace( $patt, $repl, $dname );
}

h♥rzlichen Gruß
Nitya

Hallo Anselm,

ich $zeichenweg um den Punkt ergänzt:

$zeichenweg = ‚/[^A-z|0-9|.)]/‘;

„.“ steht für jedes beliebige Zeichen … muss mit „“ maskiert werden:

$zeichenweg = '/[^a-z0-9\.]/';

Aus „Ärger geht’s nimmer.PDF“ wird „_rger_geht_s_nimmer.pdf“.
Wünschen würde ich mir „aerger_geht_s_nimmer.pdf“.

Hmm … hängt glaube ich mit der Sprach-Einstellung in locale zusammen, dass tstrtolower da nicht greift.
Dann so wie mit den kleinen Umlauten.


function sauber( $dname ) {
$nein = array(‚Ä‘,‚Ö‘,‚Ü‘,‚ä‘,‚ö‘,‚ü‘,‚ß‘);
$ja = array(‚ae‘,‚oe‘,‚ue‘,‚ae‘,‚oe‘,‚ue‘,‚ss‘);
$dname = str_replace( $nein, $ja, $dname );
$patt = ‚/[^a-z0-9.]/‘;
$repl = „_“ ;
return preg_replace( $patt, $repl, $dname );
}

„Ärger geht’s nimmer.PDF“
wird dann zu
„aerger_geht__s_nimmer.pdf“

h♥rzlichen Gruß
Nitya

2 Like

Hallo Nitya,


function sauber( $dname ) {
$nein = array(‚Ä‘,‚Ö‘,‚Ü‘,‚ä‘,‚ö‘,‚ü‘,‚ß‘);
$ja = array(‚ae‘,‚oe‘,‚ue‘,‚ae‘,‚oe‘,‚ue‘,‚ss‘);
$dname = str_replace( $nein, $ja, $dname );
$patt = ‚/[^a-z0-9.]/‘;
$repl = „_“ ;
return preg_replace( $patt, $repl, $dname );
}

Nun flutscht das aber. Herzlichen Dank!

Anselm

1 Like

Hi,


function sauber( $dname ) {
$nein = array(‚Ä‘,‚Ö‘,‚Ü‘,‚ä‘,‚ö‘,‚ü‘,‚ß‘);
$ja = array(‚ae‘,‚oe‘,‚ue‘,‚ae‘,‚oe‘,‚ue‘,‚ss‘);
$dname = str_replace( $nein, $ja, $dname );
$patt = ‚/[^a-z0-9.]/‘;
$repl = „_“ ;
return preg_replace( $patt, $repl, $dname );
}

Nun flutscht das aber. Herzlichen Dank!

nö. Da käme „aerger_geht_s_nimmer.___“ bei Deinem Beispiel raus.
Ergänze die Ersetzungszeile wie folgt:

$dname = str\_replace( $nein, $ja, strtolower($dname) );

dann klapp’s auch mit den Kleinbuchstaben, die keine Umlaute sind. :wink:

Und noch ein Tipp: den Bindestrich kannst und solltest Du ruhig durchlassen, also:

$patt = '/[^a-z0-9.-]/';

Für diejenigen, die RegExe noch nicht so ganz durchschauen, noch zur Erklärung der hier nicht vorhandenen Maskierungen:
In Zeichengruppen gibt es abweichende Metazeichen, nämlich nur "

/^-]

", wobei man sich die Maskierung für „-“ sparen kann, wenn man dieses Zeichen zuletzt notiert (da es hier seine Metafunktion nicht erfüllen kann).
Den Punkt in einer Zeichengruppe zu maskieren schadet zwar nicht, ist aber unnütz.

Gruß
Ingo