Im obigen Applet wird -
- mit URL home = getCodeBase(); das Verzeichnis des Applets herausgefunden.
- ein String erzeugt wo home in eine String geparst wird, der Name des PHP-Scripts angegeben wird, welches geladen werden soll, der Text aus dem Textfeld geholt und an die URL des PHP-Scripts angehängt.
Im PHP-Script werden die Variablen einfach mit der Methode $HTTP_GET_VARS reingeholt und könne dann weiter verarbeitet werden.
hmmm.
wenn ich das richtig verstehe kann man das ja jetzt ausnutzen!!
der User klickt auf einen Link um das Applet runterludaden. gleichzeigtig kommt ein php.php mit runter. und sobald der user das Applet started kannst du mit der php datei alles machen was du willst ohne das Applet signieren zu lassen?!?
oder hab ich das falsch verstanden? die php datei mus jedoch lokal sein, stimmts?
EDIT:
wenn jetzt jemand einen apache hat. kann man ihn dann so austricksen? wenn er das applet ausführt eine php datei runterladen. ev in temp? und diese dan ausführen? oder geht das mit dem ausführen nicht, da das file nicht auf dem localhost liegt?
sorry. hab nicht viel ahnung von php. aber hat jetzt gleich mein intresse geweckt
Hi Bleiglanz das musst du mir nochmal erklären was du meinst.
Mit POST hab ichs noch nicht ausprobiert. Gib mal bittel n Beispiel!
dotlens ich versteh immernoch nicht was du vor hast.
Wie Bleiglanz schon sagt... PHP ist ne Serverseitige geschichte ohne nen Webserver der PHP unterstützt läuft auch das PHP-Script nicht. Das Applet siehst du wenns in der PHP drin steht aber mehr auch nicht.
mit get bist du auf 1500-2000 Zeichen beschränkt, hängt vom Browser ab
dein Applet sollte einen Post-Request zusammenbasteln und diesen an das php-Skript am Server absenden (einfach weil dann die lästige Längenbegrenzug wegfällt)
ausserdem:
wenn der Text zufällig ein "bla bla&aber=nochwas" enthält, wird was abgeschnitten
Das die Seite neu geladen wird bzw. eine andere Seite geladen wird - je nach dem - ist doch noch relativ unpraktisch. Am Besten wäre es, wenn das Applet direkt die URL ansprechen würde - also nicht über den Kontext des Applets.
Das ich mit GET auf die Zeichnbeschränkung der URL stoßen kann ist mir schon klar nur wie soll ich einen POST-Request an die PHP Datei schicken? Keine Ahnung wie ich das machen könnte weil ich nicht genau weiss wie ich die Dateien in den Request verpacken soll bzw. wie der POST zum Script kommt. Hm... hoffe das verstehst du!
Hast nicht n Beispiel auf Lager? Wäre sehr nett.
Wie ist das gemeint das das Applet direkt die URL ansprechen soll? Bin ja schonmal froh das ichs überhaupt hin bekommen habe ne Datei zu schreiben.
Wenn man eine URL hat, kann man ja mit der Methode openConnection() eine Verbindung zu der URL aufbauen.
Noch besser ist natürlich eine HttpURLConnection.
Allerdings habe ich das mit einem Applet bisher noch nicht probiert. Ich weiss also nicht, was der SecurityManager dazu sagt.
Puh diesess Applet Sicherheitsgeedönse geht mir mächtig auf den zwirn. Jatz kann ich nicht mal ne Socket-Verbindung zu ner anderen IP machen. Ich werd bekloppt. Von wegen ne Anwednung nur für WEB portiert. Sch... ist das. Schonwieder n Umweg u mit PHP. Krieg das Kotzen echt. Kannst du vielleicht mal Code Beispiel posten? Hab das noch nei gemacht mit URLConnection
Also auf Anregung von Illuvator sollte vielleicht erwähnt werden das das verwendete $HTTP_GET_VARS[""]; schon veraltet ist ich habs so geschrieben um sicher zu stellen das es auch mit alten PHP Versionen funktioniert die es ja immer mal geben kann.
Die Abgekürzte Version sieht folgendermaßen aus...
Habe das dargestellte Problem von dem Link mal ausprobiert und bekomme folgendes (mal wieder!):
java.security.AccessControlException: access denied (java.net.SocketPermission domainname.geaende.rt resolve)
Hab' schonmal wegen selbigen Problem an anderer Stelle zu kämpfen: http://www.java-forum.org/de/viewtopic.php?t=10483
@EDIT 15.01.2005:
Code:
URL home = getCodeBase();
String url = home.toString()+"php.php?var1="+tf.getText();
Ich hab's grade bemerkt... In diesem Fall kann das mit der Connection warscheinlich auch deswegen nicht Klappen.
Richtig wäre:
Code:
URL home = getCodeBase();
String url = new URL(home, "php.php?var1="+tf.getText()).toString(); //oder besser .toExternalForm();
Der Fehler wird auch sehr gerne genommen, weil man ständig vergisst, das jede URL unbedingt einen Dateinamen hat (oder bekommt), so das aus "home.toString()" stets "http://top.Level.domain/verzeichnis/applet.class" wird. Den Dateinamen-Teil der URL kann man mit URL neu = new URL(URL alt, String neuerDateiname) ändern. Ein anschliessendes toString() ergibt einen unformatierten Text und toExternalForm() einen auf die im Betriebssystem verwendete Codepage abgestimmten String (oder war's URLEncoded? k.A. mal nachlesen...).