# Daten in cgi speichern



## Michi S. (16. Sep 2006)

Hallo zusammen.
Ich programmiere schon einige Zeit in Java und wollte nun für eine Windoof-Anwendung ein Online-Abmeldeformular mit Java erstellen. In diesem sollen Name, Adresse, e-Mail, etc. angegeben werden und über einen Senden-Button in einer cgi-Datei auf meiner Homepage abgespeichert werden.
Hierzu habe ich folgenden Code (den ich hier im Forum gefunden habe und etwas abgewandelt habe) eingebaut:

```
if(bAllImportant)
			{
    			try
    			{
			    sMessage = "0";
    			    // URL vom CGI-bin script.
    			    URL send = new URL("http://www.roboter-projekte.de/test-cgi/away.cgi");
			    sMessage += "1";
    			    // URL Verbindung
    			    URLConnection urlConn = send.openConnection();
			    sMessage += "2";
    			    // Läßt das RTS wissen, wir wollen einen Output.
    			    urlConn.setDoOutput(true);
			    sMessage += "3";
    			    // Kein Cachen, wir wollen es Real.
    			    urlConn.setUseCaches(false);
			    sMessage += "4";
    			    // Spezifiziert der Verbindungstyp
    			    urlConn.setRequestProperty("Content-Type",
    					               "application/x-www-form-urlencoded");
			    sMessage += "5";
			    // Sende den POST-Output
	    		    DataOutputStream printOut = new DataOutputStream(urlConn.getOutputStream());
			    sMessage += "6";
	    		    // Der Output-String mit den Formulardaten
	    		    String content = "name=" +
	    				     URLEncoder.encode(Name.getText(), "UTF-8") +
	    				     "&address=" +
	    				     URLEncoder.encode(Adresse.getText(), "UTF-8") +
	    				     "&mail=" +
	    				     URLEncoder.encode(Mail.getText(), "UTF-8") +
	    				     "&at=" +
	    				     URLEncoder.encode(At.getText(), "UTF-8") +
	    				     "&to=" +
	    				     URLEncoder.encode(To.getText(), "UTF-8") +
	    				     "&reason=" +
	    				     URLEncoder.encode(Reason.getText(), "UTF-8");
			    sMessage += "7";
	    		    printOut.writeBytes(content);
			    sMessage += "8";
	    		    printOut.flush();
			    sMessage += "9";
	    		    printOut.close();
			    sMessage += "10";
			    sMessage += "Kommunikation abgeschlossen. Daten geschrieben.";
	    		}
	    		catch (MalformedURLException murle)
	    		{
	    		    sMessage = "MalformedURLException " + murle + "Fehler";
    	    		}
    	    		catch (IOException ioe)
    	    		{
    	    		    sMessage = "IOException " + ioe.getMessage() + "Fehler";
    	    		}
			}
```

über den string sMessage lasse ich mir angeben, wie weit er dabei kommt und was für Fehler generiert werden. Allerdings musste ich feststellen, dass die Programmausführung aus irgendwelchen Gründen immer bei DataOutputStream printOut = new DataOutputStream(urlConn.getOutputStream()); hängen bleibt. Ab hier springt er aus dem try-Teil raus und zeichnet das fenster neu...

Weis einer von Euch, woran das liegen könnte?

MfG
  Michi


----------



## Michi S. (16. Sep 2006)

Hmm... wie ich eben festgestellt hab, funktioniert es scheinbar, wenn ich das Aplett auf meiner HP () ausführe... aber es schreibt keine DAten in die cgi-Datei...www.roboter-projekte.de/kontakt.html


----------



## Leroy42 (16. Sep 2006)

Michi S. hat gesagt.:
			
		

> aber es schreibt keine DAten in die cgi-Datei...www.roboter-projekte.de/kontakt.html



cgi-Dateien sind doch ausführbare Dateiein, die ein HTML erzeugen.
Wie und wieso willst du da was reinschreiben?  ???:L


----------



## Michi S. (16. Sep 2006)

Hab mir halt ma ne cgi-Endung für die Datei ausgesucht... würd auch jede andere Endung nehmen... Hat keinen besonderen Grund.
will halt nur die Daten aus dem Applet in ne Datei schreiben, die dann von nem anderen Programm auf nem rechner ausgelesen und weiterverarbeitet werden sollen


----------



## foobar (16. Sep 2006)

Du brauchst auf dem Server eine Anwendung mit der du kommunizieren kannst, sonst wird es schwierig. Also entweder du schreibst dir ein CGI oder ein PHP-Script oder ein Servlet, daß Daten entgegen nimmt und diese dann in einer Datei speichert.


----------



## Michi S. (16. Sep 2006)

also geht es direkt über die von mir verwendete Methode nicht...?! *grummel*
Bisher hab ich überall nur gelesen, dass es über diesen "einfachen" Weg ganz gut funktionieren soll.
gibt es dazu irgendwo ein tutorial in welchem möglichst diese Verwendung beschrieben wird?


----------



## Michi S. (16. Sep 2006)

hmm... hab mich mal kurz über servlets schlau gemacht und dabei feststellen müssen, dass dafür wohl was auf dem Server, auf dem das Applet läuft instaliert werden muss..
ich wollte das ganze aber so dynamisch und flexiebel halten, dass es auf (fast) jedem beliebigen Server/Homepage eingebaut und laufen kann, indem man nur die *.class dateien reinkopiert und im HTML verankert.


----------



## Leroy42 (16. Sep 2006)

Es muß immer was auf dem Server laufen, wenn dort etwas _gemacht_ werden soll
und genau daß ist bei dir der Fall!


			
				Michi S hat gesagt.:
			
		

> In diesem sollen Name, Adresse, e-Mail, etc. angegeben werden und über einen Senden-Button in einer cgi-Datei _auf meiner Homepage abgespeichert werden_.



Das geht mit HTML und Applets alleine nicht, da diese ausschließlich
beim Client etwas bewirken.

Erkundige dich doch erstmal, was dein Provider an CGI anbietet; vielleicht sind
Servlets ja schon dabei, dann könnten wir (ich) dir helfen; ansonsten mußt du dich
in Perl oder ähnliches, was dein Provider anbietet, einarbeiten.


----------



## Michi S. (18. Sep 2006)

Also meine HP unterstützt/hat CGIs für so tolle Sachen, wie Weblog-Tagebuch und so (also müsste es theoretisch möglich sein, dass man Sachen irgendwie speichern lassen kann). Aber ich will das Aplett ja net nur speziell für meinen Server auslegen! Hier nochmal mein Problem:

Hab ne Windoof-Anwendung, die ich vielen Benutzern zur verfügung stellen will. Diese Datenbankanwendung soll auch ein mehr oder weniger komfortables Online-Abmeldeformular besitzen. Hatte es erst nur über HTML und E-Mails gemacht, aber ich wollte auch ne Sicherheitsüberprüfung drin haben, ob bestimmte Felder gefüllt sind und ob die Daten darin auch halbwegs akzeptabel sind. Daher hab ich mich fürn Java-Applet entschieden.
Ursprünglich sollte das seine Daten auch per E-Mail verschicken... da ich aber scheinbar zu blöd bin um das Java-E-Mail gedönz unter Net-Beans einzubinden :bahnhof: , hab ich mich erstmal auf diese Art der speicherung von Daten konzentriert (direktes Abspeichern in Datei auf Server/HP), da mir das unkomplizierter erschien. :autsch: 
Da es ja an viele verschiedene Nutzer gerichtet sein soll, sollte die Handhabung möglichst einfach sein. Daher will ich eigentlich net, dass die dann auch noch großartig was auf ihren Servern installieren müssen... :bloed: 

Gibt es vielleicht eine einfache Methode um das zu realisieren?
Also die Methode mit dem Dateizugriff auf den Server scheidet damit wohl erstmal aus...


----------

