# Java & PHP "verbinden" / mittels Java auf mySql zugreifen



## Kalmuecke (26. Februar 2008)

Hi,

ich möchte gerne eine kleine Java Anwendung schreiben, die auf verschiedenen lokalen PCs (Clients) läuft und eigentlich Daten aus einer mySQL Datenbank, die bei einem Webhoster liegt, abrufen kann. Leider ist die Abfrage der mySQL-Datenbank von "außen" / lokal nicht möglich, sondern nur direkt von meinem Webspace aus. Allerdings kann ich auf diesem Webspace nur mit PHP 4.x arbeiten. PHP 5 wäre verfügbar, allerdings möchte ich es wegen eines großen OnlineShop nicht umstellen (never touch a running system!).

Ich würde jetzt gerne per PHP die Daten aus der Datenbank abrufen, aber dann in meinem JAVA Programm weiterverarbeiten. Dazu haben ich mir bspw. schon SOAP angeschaut, aber es scheint doch sehr komplex zu sein. Ein Java Appelt kann ich leider auf dem Webserver nicht laufen lassen, daher der lokale JAVA-Client. Da ich in Java mehr Erfahrungen habe als in PHP, möchte ich die Anwendung nicht in PHP schreiben.
Mein Interesse liegt eben mehr bei Java.

Jetzt meine Frage: Wie bekomme ich es einfach und schnell hin mit meinem Java-Client auf die Daten in der mySQL-Datenbank zu zugreifen?

Würde mich über Tutorials, Hinweise und jegliche Art der Hilfe freuen.

Gruss
Muecke


----------



## Dunas (26. Februar 2008)

Ich gehe mal davon aus, dass es immer andere Befehle sind die du an den mysql-Server schicken möchtest. Somit müsstest du dem Javaclienten gestatten ein PhP-Script mit dem MySqlbefehlen als Parameter aufzurufen.
Das würde ein Sicherheitsloch in deinen Server reißen, sollte das jemand raus bekommen könnte er Versuchen zugang zu deinem Server zu bekommen.

Vieleicht ist es möglich eine Locale Datenbank aufzusetzen. Es gibt zumindest eine leistungsfähige javaDB. Dann müsstest du dich nur um das Synchronisieren kümmern.


----------



## Kalmuecke (26. Februar 2008)

Dunas hat gesagt.:


> Ich gehe mal davon aus, dass es immer andere Befehle sind die du an den mysql-Server schicken möchtest. Somit müsstest du dem Javaclienten gestatten ein PhP-Script mit dem MySqlbefehlen als Parameter aufzurufen.
> Das würde ein Sicherheitsloch in deinen Server reißen, sollte das jemand raus bekommen könnte er Versuchen zugang zu deinem Server zu bekommen.
> 
> Vieleicht ist es möglich eine Locale Datenbank aufzusetzen. Es gibt zumindest eine leistungsfähige javaDB. Dann müsstest du dich nur um das Synchronisieren kümmern.



Ich möchte eigentlich aus der DB lesen und wieder etwas reinschreiben!


----------



## Dunas (26. Februar 2008)

Lesen könntest du indem du ein Php-Script aufrufst mit dem SQL-Befehl als Parameter und dein Server stellt dir dan das Ergebniss als Webseite dar. Die musst du dan auslesen und kannst sie verarbeiten.

Das reinschreiben würde ähnlich verlaufen. Php-Script mit Parameter aufrufen. Die Parameter sind dan eben der SQL-Befehl und dem Inhalt der eingefügt werden soll.

Ich glaube nicht das dies die beste Lösung wäre, aber ich kan dir leider keine andere liefern. 
Möchtest du den Java-Clienten dazu benutzen um weitere Artikel etc. einzutragen?
Könntest du nicht die Einstellungen des MySql servers so verändern, dass du von außen direkten Zugang hast?


----------



## Kalmuecke (26. Februar 2008)

Dunas hat gesagt.:


> Lesen könntest du indem du ein Php-Script aufrufst mit dem SQL-Befehl als Parameter und dein Server stellt dir dan das Ergebniss als Webseite dar. Die musst du dan auslesen und kannst sie verarbeiten.
> 
> Das reinschreiben würde ähnlich verlaufen. Php-Script mit Parameter aufrufen. Die Parameter sind dan eben der SQL-Befehl und dem Inhalt der eingefügt werden soll.
> 
> ...



Genau, ich möchte an vorhandenen Datensätzen Änderungen vornehmen und neue hinzufügen! Bei 1und1 kann ich leider keine Veränderung herbeiführen, so daß ich von außen Zugriff bekomme! Aber deine Idee eine PHP-Datei zu schreiben ist gar nicht so schlecht!
Wobei ich noch nicht weiß, wie man mit Java PHP-Datei aufruft, ausführt etc.!!
Tipps


----------



## Dunas (26. Februar 2008)

PhP-Datein werden ganz normal per URL Aufruf angesteuert.

Wenn du eine Internetverbindung hast kannst du das doch per Webeditor oder nicht? Ich glaube 1 und 1 hat so was bei ihren webshops.


----------



## Looky (27. Februar 2008)

Mein Freund ich habe genau das was du brauchst.

https://jpmdbc.dev.java.net/

Viel Spaß weiterhin
Christian


----------



## procurve (27. Februar 2008)

Die Suche im Forum hätte diese Lösung auch zutage gefördert.


----------



## Kalmuecke (29. Februar 2008)

danke für den Tipp! Genau das ist es!
Jetzt muss ich nur noch rausfinden, wie es funktioniert!

Ps.: Die Suche hatte ich ja genutzt, aber leider kam eben das nicht zu Tage!


----------



## procurve (29. Februar 2008)

Die Suche nach "php mysql" liefert einige Threads, der erste davon (nach deinem neuen Thread) ist dieser hier, der sogar im (zugegeben etwas wirren) Threadtitel schon beschreibt, was du auch suchst:
http://www.tutorials.de/forum/java/...-seite-aufrufen-die-dann-eine-db-aufruft.html

Und dort steht die von dir gesuchte Lösung.

Wie hast du denn gesucht

Sei's drum, das Problem ist ja gelöst. 

P.S.: Wie es funktioniert siehst du hier: http://www.gruessditsch.de/blog/?p=14


----------



## Kalmuecke (29. Februar 2008)

Super genial! 10min lesen und einbauen und alles klappt!
Klasse Arbeit!!


----------



## Kalmuecke (29. Februar 2008)

Mal noch eine andere Frage, vielleicht habe ich die Antwort auch übersehen!

Ich kann mich problemlos mit meiner DB verbinden , dabei liegt das JPMDBC jedoch eine debug-Datei an, in der Passwort, Benutzername, DB-Name sowie Host drin stehen.
Ist nicht wirklich praktisch, weil man es herunterladen kann, wenn man weiß wie die Debug-Datei heißt.

Kann mir jemand sagen, wie man das abschaltet, so daß nichts mehr in die Debug-Datei geschrieben wird und diese am besten nicht mehr erzeugt wird
Darauf habe ich leider noch keine Antwort bekommen!

Gruss
Muecke

Ps.: Wenn ich die JPMDBC-Datei in ein Verzeichnis geschützt durch HTACESS lege, funktioniert das Java Programm nicht mehr, ist ja auch logisch, weil kein Zugriff geschehen kann!


----------



## Looky (29. Februar 2008)

Digga tu mir einen gefallen und nutz bitte in zukunft die Forensuche, das erspart mir und anderen Herzinfarkte 

1) HTAccess geschützte Ordner mit Java auslesen (gefunden über die Forensuche)
http://www.tutorials.de/forum/java/224443-java-htaccess.html

2) Mach doch mal die php datei auf, da steht doch was von debug = true

Du hast dich mit dem Prinzip und dem Thema wie das funktioniert wohl leider noch nicht so richtig befasst. Ich würde an deiner Stelle immer erst versuchen zu verstehen, "was da abgeht" bevor ich einen fremden Quellcode einbinde. Zumindest wenn möglich und wenn die Sourcen vorliegen...

Reinhaun
Christian

PS: Ich habe den Source übrigens so geändert das Passwort und Username der db in der php datei verankert sind, da diese sonst per ? Operator an die php datei übertragen werden. So kann jeder der möchte einen Netalyzer zwischen deinem Tool und der db setzen und kann das passwort und den usernamen sogar ohne decompilierung auslesen.

Horido!


----------



## Kalmuecke (2. März 2008)

Looky hat gesagt.:


> 1) HTAccess geschützte Ordner mit Java auslesen (gefunden über die Forensuche)
> http://www.tutorials.de/forum/java/224443-java-htaccess.html



Das habe ich auch gefunden! Aber das hab ich ja auch nicht gesucht!
Ich habe den "Hebel" gesucht um den Debugmodus abzuschalten! Und den hast du mir jetzt gezeigt!

Ps.: Ich habe schon verstanden worum es da geht! Aber sicherlich nicht bis ins letzte Detail. Ehrlich gesagt interessiert es mich auch nicht, sonst hätte ich es selbst schreiben können, was ich nicht wollte, weil es ne Menge Zeit gekostet hätte, zumal ich in PHP nicht so fit bin. Und wozu gibt es Klassen etc.,die einem eine Funktion zur Verfügung stellen, wenn man sie nicht einfach nutzt mit ihrer nach außen zur Verfügung gestellten Schnittstelle ohne sie bis in letzte Detail zu verstehen......



> PS: Ich habe den Source übrigens so geändert das Passwort und Username der db in der php datei verankert sind, da diese sonst per ? Operator an die php datei übertragen werden. So kann jeder der möchte einen Netalyzer zwischen deinem Tool und der db setzen und kann das passwort und den usernamen sogar ohne decompilierung auslesen.



Und wie hast du das gemacht bzw. wo hast du angesetzt?


----------



## Looky (3. März 2008)

na ums leicht zu machen, ich hab in die java datei einfach blödsinn eingetragen, sprich er verschickt schrott als pwd und user.

die wirklichen dtaen habe ich in die php datei eingetragen und die entsprechenden code zeilen wo die daten eigentlich ausgelesen werden habe ich ersetzt.

gruß
christian


----------



## alex0801 (21. März 2008)

Meld mich auch mal zu Wort ;-)

Ich bin das Hirn hinter jPMdbc ...

Das Passwoet wird nur ein mal "leserlich" übertragen. Danach wird ein Session-Code benutzt.
Wem das nicht reicht, dem rate ich zu HTTPS. Das Passwort in der PHP-File zu verankern ist in erster Hinsicht zwar "sicher". Aber die Daten werden ja nach wie vor "unverschlüsselt" übertragen. Macht ja also keinen Sinn die Passwort-Paranoia nur auf das Passwort zu setzen. Die zu übertragenen Daten sind ja mindestens genauso "geheim" wie das Passwort selbst. 

Also: HTTPS ist die Lösung des Problems ;-)

Gruß
Alex


----------



## Looky (21. März 2008)

brauch ich für https nicht ein zertifikat? pfff das kostet doch richtig asche wenn ich das richtig gelesen hab.

mein hoster ist all-inkl.com


----------



## Kalmuecke (21. März 2008)

bei 1und1 ist es inklusive!


----------



## alex0801 (23. März 2008)

Ich denke ein guter Hoster bietet das zu einem akzeptablen Preis an. 
Würde mich im übrigen über ein Feedback bzgl. der HTTPS Nutzung in jPMdbc freuen ...
Aber bitte auf der Projektseite http://jpmdbc.dev.java.net

Gruß
Alex


----------

