mod_form RC2 und File-Upload

Diskussion zum Formular-Modul für ConPresso 4
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

mod_form RC2 und File-Upload

Beitrag von Mr. Magpie »

Das Formular-Modul bietet ja in der RC2-Version eine Upload-Funktion für Dateien. Dazu habe ich ein paar Fragen und Probleme.

1. Formular-Template

Ich habe mir im Formular-Template (Bereich Artikelseite) für den Datei-Upload ein Feld folgendermaßen angelegt:

<!-- Text: Upload-Datei; type=file; class=langfeld; size=30; -->

aber auch das funktionierte gleichermaßen:

<!-- File: Upload-Datei; type=file; class=langfeld; size=30; -->

Frage hierzu: Welche Version ist besser bzw. vorgesehen? Ich vermute 'mal stark, die letztere.


2. (Fehler-)Meldung beim erfolgreichen Upload

Ich erhalte, wenn die Datei hochgeladen wird/wurde immer folgende Meldung vor dem gesamten restlichen Seitenquellcode:

Code: Alles auswählen

Array
(
    [Upload-Datei] => Array
        (
            [name] => Bilddatei.gif
            [type] => image/gif
            [tmp_name] => /tmp/phpSkGtgI
            [error] => 0
            [size] => 3427
        )

)
Natürlich optisch als Einzeiler, aber im Seiten-Quellcode so wie hier abgebildet. Hier bei einem Upload der Datei Bilddatei.gif mit 3427 Bytes Größe.


3. Datei-Upload-Felder leer, wenn Formular-Eingabe-Prüfung Fehler findet

Findet die Formular-Eingabe-Prüfung einen Fehler, bspw. ein nicht ausgefülltes Pflichteingabefeld, wird das oder die entsprechenden Felder wie üblich markiert. Aber: gleichzeitig werden die Eingaben in den Datei-Upload-Feldern gelöscht und beim erneuten Absenden des Formulars nichts hoch geladen - außer natürlich, man hat diesen Fehler bemerkt und diese Felder auch wieder befüllt.


4. Die CSS-Klasse - hier "langfeld" - soll das Feld formatieren, in welchem der Datei-Pfad/Dateibezeichnung der hochzuladenden Datei eingetragen wird.
Die Formatierung funktioniert bei Input-Feldern vom Typ "text", nicht aber hier beim Typ "file". Hier scheinen browserspezifische Formatierungen durch zu schlagen.
Der HTML-Code für die beiden Input-Feldarten sieht bis auf den Type ziemlich gleich aus:

Code: Alles auswählen

<input class="langfeld" type="file" size="30" name="Upload-Datei"/>
bzw. für ein normales Text-Input-Feld:

Code: Alles auswählen

<input class="langfeld" type="text" size="30" name="Nachname"/>
Hier die entspr. Styles:

Code: Alles auswählen

input { border: 1px solid #24347A; padding-left: 4px; padding-right: 4px; }

input.langfeld { width: 190px; }
Weiß jemand einen Trick hierzu?
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7381
Registriert: 01.01.1970 02:00
Hat sich bedankt: 114 Mal
Danksagung erhalten: 938 Mal

Beitrag von MarkusR »

Zuerst einmal grundsätzlich:

Der Dateiupload ist nicht dokumentiert, da er (wie Du selbst zeigst) noch nicht zuverlässig/zufriedenstellend funktioniert und nur durch Lesen des Quelltextes erkannt werden kann.

zu 1.) vorgesehen ist die Text-Version, weil das Template auch immer der Ausgabe dient

zu 2) das ist eine Kontrollausgabe, die in der funktionierenden Version entfernt werden wird

zu 3) das ist bei allen Formularen so. Es wird ja nicht der Inhalt dieses Feldes sondern die Datei gesendet. Daher kann diese Info auch nicht rekonstruiert werden. Was gesendet wird siehst Du ja bei 2.)

zu 4.) Stimmt. Kann nicht formatiert werden.. aber es gibt Lösungen...
http://www.quirksmode.org/dom/inputfile.html
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

MarkusR hat geschrieben:Zuerst einmal grundsätzlich:

Der Dateiupload ist nicht dokumentiert, da er (wie Du selbst zeigst) noch nicht zuverlässig/zufriedenstellend funktioniert und nur durch Lesen des Quelltextes erkannt werden kann.
Oder man verfolgt das Forum :) ...
MarkusR hat geschrieben:Noch nicht dokumentiert habe ich übrigens den Dateiupload per Formular...
...und schließt daraus, dass es nur noch an der Dokumentation mangelt.

Das "Zuerst einmal grundsätzlich" war m.E. also ziemlich deplatziert.

Und, ja, wir sind manchmal etwas empfindlich :?
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7381
Registriert: 01.01.1970 02:00
Hat sich bedankt: 114 Mal
Danksagung erhalten: 938 Mal

Beitrag von MarkusR »

Schon ok...

Vielleicht sollte ich solche Dinge nicht entwickeln weil sie mir Spaß machen sondern darauf warten, daß sich in irgendeinem Zusammenhang daraus eine Notwendigkeit ergibt.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Doch, doch! Bitte entwickle solche Dinge weiter mit Spaß und sobald sie dir in den Sinn kommen!
Eine Upload-Funktion vermisste ich schon lange, und just im Moment kann ich sie gut gebrauchen.

Leider hast du ja bereits die (Fort-)Entwicklung des alternativen Parsers fallen gelassen. Ich sag's dir ganz ehrlich: Ohne diesen, könnte ich gar nicht mehr auskommen!
Günther Ludwig
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

kleine Anregung / Feature-Request

Beitrag von Mr. Magpie »

Eine kleine Anregung/ein Feature-Request für mod_form:

Wenn man über die URL Werte an das Formular übergibt, ist es etwas unschön, dass all die schönen Parameter in der Adressleiste des Browsers zu sehen sind.
Ich wünschte, das Formular würde in solchen Fällen eine Art Initialisierungslauf machen - also ganz so, als würde der Benutzer auf den Submit-Button klicken -, bei welchem aber im Ggs. zum Submit nicht-ausgefüllte Pflichtfelder usw. erst einmal nicht entsprechend markiert würden.
Mit Hilfe einer Checkbox in den Modul-Einstellungen sollte dieses Verhalten für Formulare, bei denen dies nicht nötig ist, abschaltbar sein.
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7381
Registriert: 01.01.1970 02:00
Hat sich bedankt: 114 Mal
Danksagung erhalten: 938 Mal

Beitrag von MarkusR »

Wenn man bei "Formular-Versandart" statt GET einfach mal POST auswählt, dann erscheint dies nicht in der Adresszeile.

Dies gilt auch für die Übergabe von Parametern, die man statt über eine URL über ein Formular mit Submitbutton und method=post an das Formular sendet...

Man baut also im Artikeltemplate statt

Code: Alles auswählen

<a href="../mod_form/index.php?mail=<!-- Text: Mail-Adresse; -->">Kontaktformular</a>
ein Formular in der Form

Code: Alles auswählen

<form action="../mod_form/index.php" method="post">
<input type="hidden" name="mail" value="<!-- Text: Mail-Adresse; -->">
<input type="submit" value="Kontaktformular">
</form>
Ich fürchte, daß ich diese Möglichkeit der Werteübergabe nicht explizit erwähnt habe, obwohl es schon immer so gedacht und programmiert war... :oops:
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

MarkusR hat geschrieben:Wenn man bei "Formular-Versandart" statt GET einfach mal POST auswählt, dann erscheint dies nicht in der Adresszeile.
Nicht, wenn die Parameter über einen URL an das Formular übergeben werden.
MarkusR hat geschrieben:[...]über ein Formular mit Submitbutton und method=post an das Formular sendet...
Dann müsste ich in meinem Artikel anstelle des einfachen Links ein Formular generieren, darin die entsprechenden hidden-Felder belegen und den Submit-Button wie einen einfachen Link aussehen lassen.
So meinst du das doch, oder?

EDIT: :P Wieder einmal eine Post-Edit-Überschneidung
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7381
Registriert: 01.01.1970 02:00
Hat sich bedankt: 114 Mal
Danksagung erhalten: 938 Mal

Beitrag von MarkusR »

den Submit-Button wie einen einfachen Link aussehen lassen
eleganter wäre es einen normalen Link mit einer JS-Funktion das Formular versenden zu lassen
http://de.selfhtml.org/javascript/objek ... htm#submit
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

MarkusR hat geschrieben: Man baut also im Artikeltemplate statt

Code: Alles auswählen

<a href="../mod_form/index.php?mail=<!-- Text: Mail-Adresse; -->">Kontaktformular</a>
ein Formular in der Form

Code: Alles auswählen

<form action="../mod_form/index.php" method="post">
<input type="hidden" name="mail" value="<!-- Text: Mail-Adresse; -->">
<input type="submit" value="Kontaktformular">
</form>
Klasse Idee!

Deine Methode der "kleinen Anregungen" funktioniert!
Günther Ludwig
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

MarkusR hat geschrieben:
den Submit-Button wie einen einfachen Link aussehen lassen
eleganter wäre es einen normalen Link mit einer JS-Funktion das Formular versenden zu lassen
http://de.selfhtml.org/javascript/objek ... htm#submit
Nee, auf JS will ich soweit wie möglich verzichten.
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7381
Registriert: 01.01.1970 02:00
Hat sich bedankt: 114 Mal
Danksagung erhalten: 938 Mal

Re: mod_form RC2 und File-Upload

Beitrag von MarkusR »

Mr. Magpie hat geschrieben:2. (Fehler-)Meldung beim erfolgreichen Upload

Ich erhalte, wenn die Datei hochgeladen wird/wurde immer folgende Meldung vor dem gesamten restlichen Seitenquellcode:

Code: Alles auswählen

Array
(
    [Upload-Datei] => Array
        (
            [name] => Bilddatei.gif
            [type] => image/gif
            [tmp_name] => /tmp/phpSkGtgI
            [error] => 0
            [size] => 3427
        )

)
Natürlich optisch als Einzeiler, aber im Seiten-Quellcode so wie hier abgebildet. Hier bei einem Upload der Datei Bilddatei.gif mit 3427 Bytes Größe.
Der Vollständigkeit halber:
Um das zu beseitigen kann in includes/actions.inc.php bei ca. Zeile 100 dieser Teil entfernt oder auskommentiert werden:

Code: Alles auswählen

		if ($dothefiles) {
			print_r($_FILES);
		}
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Danke, hab' ich schon gemacht.
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7381
Registriert: 01.01.1970 02:00
Hat sich bedankt: 114 Mal
Danksagung erhalten: 938 Mal

Beitrag von MarkusR »

Und nochmal zu Punkt 3.)

Ich kann zwar mittlerweile den gewählten Pfad und Dateinamen speichern, aber ALLE Browser verhindern eine Vorbelegung von file-Feldern, da dies sonst eine Sicherheitslücke darstellen würde, mit der man sich beliebige Dateien vom Rechner des Users holen könnte.

Mehr als eine Meldung wird daher nicht drin sein...
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 02:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Danke, ist schon okay.

Ich werde diese Felder auf "needed" setzen, sodass der User die Dateien, welche er vor der Formularprüfung ausgewählt hat, eben noch einmal zusammensuchen muss. Immerhin kann er sie dann nicht vergessen, anzugeben.
Günther Ludwig