DropzoneJS -> Parameter mitgeben für Switch Case

RedlightX

Aktiver NGBler
Registriert
18 Juli 2013
Beiträge
1.094
Hallo zusammen,

ich habe ein Problem mit DropzoneJS.
Folgendes möchte ich umsetzen:

User kann Bilddateien hochladen:

[src=html5]<div class="image_upload_div col s4">
<form action="router.php" class="dropzone" method="post">
</form>
</div>[/src]

Das ganze soll zur Auswertung und Weiterverarbeitung an meine "Steuerdatei" namens router.php gesendet werden, die eine Auswertung auf den Parameter "action" macht. Das sieht folgendermaßen aus:

[src=php]switch ($_POST['action']) {
case 'imageuploader':
Userimageupload($_FILE);
break;
}
[/src]

Es soll also geschaut werden, ob action=imageuploader ist und dann die entsprechende Funktion zur Weiterverarbeitung aufgerufen werden.

Wie schaffe ich es bei Dropzone, die entsprechende "&action=imageuploader" Parameter mitzugeben? Ich bin da seit gestern Abend echt ratlos :/

Danke für Ideen und Hilfe (Y)
 
Hi!

a) Wäre es nicht möglich zu unterscheiden von welcher Seite die Anfrage gekommen ist und dann entsprechend zu reagieren?
(nach "Request_Uri") suchen, darauf prüfen und in der Steuer PHP die URL abfragen und dann entsprechend Steuern.
Das ist transparent und sollte auch sicher sein und geht ohne Daten-(Benutzer)eingabe.

b) Du könntest dem Formular ein "Hidden input"-Feld geben, der
<input type="hidden" name="caller" value="aufrufer">

Und dann mit PHP prüfen ob das Feld "caller" gesetzt ist und dann nach dem Value handeln, aber man muß halt bedenken, man kann den Wert auch ändern auf Benutzer Seite.
Mit oder ohne a)

c) Warum nicht in "action" "router.php" mit "router.php?caller=MeineQuelle&andererParamter=Test" umschreiben? Du hast schließlich ein "Post" der Daten übergibt an den Server.
Aber auch hier, man darf sich nicht darauf verlassen, weil UserInput. Das heißt du solltest das kontrollieren, siehe a).


Nachtrag:
Eine Anmerkung noch, auch bei Variante a) solltest du nach wie vor die Eingaben überprüfen die vom Nutzer kommen.
Ob ein Feld gesetzt ist, ob die Werte wie erwartet sind und den ganzen "Jazz". ;)
 
Zuletzt bearbeitet:
@theSplit ich mache es immer wie bei c), und prüfe dann serverseitig Datengröße, Typ, etc. Sollte was nicht stimmen im Sinne von &action=imageuploader fehlt bekommen die User knallhart ein Fehler geschmissen, da das imgrunde nur passiert, wenn die versuchen, mit der Seite Spielchen zu treiben.
 
  • Thread Starter Thread Starter
  • #4
Hallo zusammen,
danke für die Antworten :-)

Im Grunde wollte ich Variante C) nehmen und in der Form-Action folgendes machen:
<form action="router.php?action=imageuploader" class="dropzone" method="post">

Allerdings kriege ich dann einen 404er geschmissen, weil die URL so nicht passt.

Als Workaround habe ich nun eine Datei namens userimageprocessing angelegt, wo alles reinläuft und entsprechend ausgewertet wird. Elegant ist erstmal anders, aber ich hasse es, mich immer an Kleinigkeiten aufzuhalten...
 
404 sollte nur kommen, wenn er die router.php nicht findet. Die GET Infos stören das doch nicht? Oder habe ich dein Problem nicht richtig verstanden?
 
@werner
Es kann ein Server Problem sein das die Parameter im POST (in einem method="post" sind es POST-Parameter, nicht nach GET Methode zu erfragen, sondern zu POSTen) ;) nicht verarbeitet werden... aber da kann ich auch nur raten warum ausgerechnet bei ihm nicht.

Hatte dazu auch noch einmal recherchiert und es wird eigentlich empfohlen so etwas über Hidden inputs zu machen, da dies nicht so Fehleranfällig ist wie man hier sieht, was auch als Grund genannt wurde auf Stack Overflow, weil der Fragende das fast gleiche Problem damit hatte.
 
Im schlimmsten Fall sollte sich das Problem relativ einfach debuggen lassen, indem du dir die Request in der Konsole genau anschaust. Dann kannst du die URL reproduzieren und du siehst, wie genau der Server angesteuert wird.

Ich würde dir übrigens empfehlen, auf ein ordentliches (nicht dateibasiertes) Routing-System umzusteigen. kann ich beispielsweise wärmstens empfehlen.
 
Zurück
Oben