Hey Leute,
ich will diesen Thread nicht mit gejammer eröffnen, wie lange ich schon an meinem Problem hänge und dass ich überhaupt nichtmehr weiter weiß. Aber in der Zeit, die ich schon mit dem Problem verbracht habe, gehen andere Leute normalerweise mindestens 2 mal schlafen :autsch:
Problemstellung: Ich schreibe an einer Website, auf der man Sitzplätze reservieren kann. Über php-Seiten wählt man die Veranstaltung aus, Anzahl der Karten usw., auf einer php-Seite wird dann innerhalb eines Applets der entsprechende Sitzplan angezeigt und man kann sich Sitzplätze aussuchen.
Wenn man Plätze ausgesucht hat, muss die Webseite natürlich auch übermittelt bekommen, welche Plätze das sind. Für diese Übermittlung vom Applet zur entsprechenden Webseite habe ich mir die POST-Methode ausgesucht.
Warum POST?
-Die GET-Methode würde sicherlich in 5 min stehen, allerdings kann sich jeder denken, wie die URL aussieht, wenn da jemand 20 Plätze reserviert.
-Ich habe alternativ versucht die Daten aus dem Applet heraus in Cookies zu speichern und dann aus der php Seite aufzurufen, aber das sei mal nur so am Rande erwähnt...
POST scheint mir am sinnvollsten zu sein...
Zu meinen bisherigen Recherchen: Normalerweise ließ sich bis jetzt jedes Problem mit Google lösen, nicht immer elegant, aber es hat funktioniert. Mittlerweile bin ich soweit, dass egal welche Suchbegriffe ich mir ausdenke einfach alle Links schon lila, also besucht sind. Man findet fast ausschließlich Codebeispiel(e), die auf URLConnection bzw. HTTPURLConnection basieren. Hier eines von vielen Beispielen, die ich ausprobiert habe:
Wenn ich das richtig sehe, sollte diese Methode zwei Variablen, myVariable1 und myVariable2 an das Dokument "http://localhost/Reservierungssystem/reservieren.php" schicken, die dann aus diesem Dokument heraus ungefähr so abrufbar sein müssten: echo $_POST['myVariable1'];
ACHTUNG: Das Dokument "reservieren.php" ist hier nicht die php-Datei, aus der das java-Applet gestartet wird. Nennen wir diese Datei "sitzplan.php".
Wenn ich also oben geschriebenen Code ausführe und dann per Button auf der "sitzplan.php" Seite die Seite "reservierung.php" aufrufe kann ich dort in $_POST weit und breit nichts von myVariable1 finden.
Zwischenfrage: Kann ich überhaupt eine POST-Variable an ein anderes php Dokument schicken als das, aus dem das Applet aufgerufen wird? Sagen wir mal ich sende die Variable an sitzplan.php, dann bringt mir das doch nichts, die Seite ist doch schon geladen. (Das is die Seite, auf der das Applet liegt)
Ich habe mir überlegt, dass mein aus dem Applet gesendetes $_POST eventuell überschrieben wird, wenn ich in sitzplan.php auf den Button klicke um reservierung.php auzurufen. Deshalb habe ich auch schon probiert die Seite reservierung.php manuell aufzurufen, nachdem das Applet die POST-Variablen gesendet hat. Kein Erfolg.
Ein anderer Ansatz war, die Seite reservierung.php aus dem Applet heraus aufzurufen, damit die php-Datei Sitzplan.php da nichtsmehr machen konnte:
-> auch kein Erfolg
Hier mal die Meldung, die ich geschätze 2000 mal gelesen habe:
Notice: Undefined index: myVariable1 in /Applications/XAMPP/xamppfiles/htdocs/Reservierungssystem/reservieren.php on line 74
Hier der Code, der die Meldung hervorgerufen hat:
Auch wenn das aus meinem Codebeispiel oben nicht hervor geht, ich habe bis jetzt versucht mit HTTPURLConnection zu senden, aber auch mit URLConnection. Einen Unterschied kenne ich nicht, ich habe einfach blind ausprobiert...
Dann habe ich hier im Forum einen Thread gefunden, der mich darauf gebracht hat, dass ich die Variablen aus $_HTTP_RAW_POST_DATA auslesen muss, einen Versuch habe ich gestartet, Meldung:
Notice: Undefined variable: _HTTP_RAW_POST_DATA in /Applications/XAMPP/xamppfiles/htdocs/Reservierungssystem/reservieren.php on line 12
Gedankengang: Ich benutze zum Testen XAMPP Control, lade die Dateien also nicht auf einen Webserver hoch sondern teste lokal auf meinem Rechner. Kann XAMPP Control vielleicht nicht mit meinen abgefeuerten HTTP-Requests umgehen?
AbschlussFrage/Wunschlösung: Ich möchte gerne innerhalb des Applets (das auf sitzplan.php aufgerufen wird) einen Button "Weiter" haben, per click darauf wird die Seite reservierung.php aufgerufen. Diese Seite kann auf POST-Variablen zugreifen, die das Applet gesendet hat.
Wenn es jemandem hilft, kann ich auch gerne mal jemandem Zugriff auf die Seiten und das Applet geben (zum HTTP-Quellcode auslesen, Applet sehen oder sonst irgendwas). Ich bin in meinem jetzigen geistigen Zustand zu allem bereit... ???:L
ich will diesen Thread nicht mit gejammer eröffnen, wie lange ich schon an meinem Problem hänge und dass ich überhaupt nichtmehr weiter weiß. Aber in der Zeit, die ich schon mit dem Problem verbracht habe, gehen andere Leute normalerweise mindestens 2 mal schlafen :autsch:
Problemstellung: Ich schreibe an einer Website, auf der man Sitzplätze reservieren kann. Über php-Seiten wählt man die Veranstaltung aus, Anzahl der Karten usw., auf einer php-Seite wird dann innerhalb eines Applets der entsprechende Sitzplan angezeigt und man kann sich Sitzplätze aussuchen.
Wenn man Plätze ausgesucht hat, muss die Webseite natürlich auch übermittelt bekommen, welche Plätze das sind. Für diese Übermittlung vom Applet zur entsprechenden Webseite habe ich mir die POST-Methode ausgesucht.
Warum POST?
-Die GET-Methode würde sicherlich in 5 min stehen, allerdings kann sich jeder denken, wie die URL aussieht, wenn da jemand 20 Plätze reserviert.
-Ich habe alternativ versucht die Daten aus dem Applet heraus in Cookies zu speichern und dann aus der php Seite aufzurufen, aber das sei mal nur so am Rande erwähnt...
POST scheint mir am sinnvollsten zu sein...
Zu meinen bisherigen Recherchen: Normalerweise ließ sich bis jetzt jedes Problem mit Google lösen, nicht immer elegant, aber es hat funktioniert. Mittlerweile bin ich soweit, dass egal welche Suchbegriffe ich mir ausdenke einfach alle Links schon lila, also besucht sind. Man findet fast ausschließlich Codebeispiel(e), die auf URLConnection bzw. HTTPURLConnection basieren. Hier eines von vielen Beispielen, die ich ausprobiert habe:
Java:
private void PostResult4(String url2) throws MalformedURLException, IOException
{ //in url2 wird der name der php-Datei übergeben, die angesprochen werden soll
String urlParameters = "myVariable1=myValue1&myVariable2=myValue2";
URLConnection connection = null;
URL url = getBaseURL(this.getDocumentBase()); //Addresse des verzeichnisses, in dem die Datei liegt, aus der das Applet aufgerufen wurde
//Ich bekomme immer, mit GetCodeBase und mit GetDocumentBase, die komplette URL mit Name
//der php-Datei und allen Variablen. "getBaseURL" habe ich geschrieben um alles ab dem "?" im
//Link hinten abzuschneiden. Nach dieser Zeile steht in url also etwas wie "http://localhost/Reservierungssystem/"
url = new URL(url + url2); //fertige url, Beispiel: [url]http://localhost/Reservierungssystem/reservieren.php[/url]
System.out.println("URLConnection wird gestartet an: "+url.toString() );
connection = (URLConnection)url.openConnection();
// Use post and add the type of post data as URLENCODED
connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
// Optinally add the language and the data content
connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
// Set the mode as output and disable cache.
connection.setUseCaches (false);
connection.setDoInput(true);
connection.setDoOutput(true);
//Send request
DataOutputStream wr = new DataOutputStream (connection.getOutputStream ());
wr.writeBytes (urlParameters);
wr.flush ();
wr.close ();
}
Wenn ich das richtig sehe, sollte diese Methode zwei Variablen, myVariable1 und myVariable2 an das Dokument "http://localhost/Reservierungssystem/reservieren.php" schicken, die dann aus diesem Dokument heraus ungefähr so abrufbar sein müssten: echo $_POST['myVariable1'];
ACHTUNG: Das Dokument "reservieren.php" ist hier nicht die php-Datei, aus der das java-Applet gestartet wird. Nennen wir diese Datei "sitzplan.php".
Wenn ich also oben geschriebenen Code ausführe und dann per Button auf der "sitzplan.php" Seite die Seite "reservierung.php" aufrufe kann ich dort in $_POST weit und breit nichts von myVariable1 finden.
Zwischenfrage: Kann ich überhaupt eine POST-Variable an ein anderes php Dokument schicken als das, aus dem das Applet aufgerufen wird? Sagen wir mal ich sende die Variable an sitzplan.php, dann bringt mir das doch nichts, die Seite ist doch schon geladen. (Das is die Seite, auf der das Applet liegt)
Ich habe mir überlegt, dass mein aus dem Applet gesendetes $_POST eventuell überschrieben wird, wenn ich in sitzplan.php auf den Button klicke um reservierung.php auzurufen. Deshalb habe ich auch schon probiert die Seite reservierung.php manuell aufzurufen, nachdem das Applet die POST-Variablen gesendet hat. Kein Erfolg.
Ein anderer Ansatz war, die Seite reservierung.php aus dem Applet heraus aufzurufen, damit die php-Datei Sitzplan.php da nichtsmehr machen konnte:
Java:
URL url = new URL(getBaseURL(this.getDocumentBase())+"reservierung.php");
getAppletContext().showDocument(url);
Hier mal die Meldung, die ich geschätze 2000 mal gelesen habe:
Notice: Undefined index: myVariable1 in /Applications/XAMPP/xamppfiles/htdocs/Reservierungssystem/reservieren.php on line 74
Hier der Code, der die Meldung hervorgerufen hat:
PHP:
echo$_POST['myVariable1'];
Auch wenn das aus meinem Codebeispiel oben nicht hervor geht, ich habe bis jetzt versucht mit HTTPURLConnection zu senden, aber auch mit URLConnection. Einen Unterschied kenne ich nicht, ich habe einfach blind ausprobiert...
Dann habe ich hier im Forum einen Thread gefunden, der mich darauf gebracht hat, dass ich die Variablen aus $_HTTP_RAW_POST_DATA auslesen muss, einen Versuch habe ich gestartet, Meldung:
Notice: Undefined variable: _HTTP_RAW_POST_DATA in /Applications/XAMPP/xamppfiles/htdocs/Reservierungssystem/reservieren.php on line 12
Gedankengang: Ich benutze zum Testen XAMPP Control, lade die Dateien also nicht auf einen Webserver hoch sondern teste lokal auf meinem Rechner. Kann XAMPP Control vielleicht nicht mit meinen abgefeuerten HTTP-Requests umgehen?
AbschlussFrage/Wunschlösung: Ich möchte gerne innerhalb des Applets (das auf sitzplan.php aufgerufen wird) einen Button "Weiter" haben, per click darauf wird die Seite reservierung.php aufgerufen. Diese Seite kann auf POST-Variablen zugreifen, die das Applet gesendet hat.
Wenn es jemandem hilft, kann ich auch gerne mal jemandem Zugriff auf die Seiten und das Applet geben (zum HTTP-Quellcode auslesen, Applet sehen oder sonst irgendwas). Ich bin in meinem jetzigen geistigen Zustand zu allem bereit... ???:L