# Mit Java über PHP in MySQL anmelden (Login script)



## LiiKe (26. Jul 2014)

Guten Tag zusammen,

ich habe gerade ein kleines Problem und komme nicht weiter.
Und zwar habe ich eine JAVA Applikation, welche Daten aus einer MySQL Datenbank ließt und oder Änderungen vornimmt. Da meine Datenbank auf einem Server liegt und ich nicht direkt mit JAVA darauf zugreifen kann, benutze ich PHP als Schnittstelle. Soweit so gut.
Natürlich muss sich nun ein Nutzer einloggen, bevor er an die geschützen Daten kommt.

Ich spreche mein PHP Script ganz normal per URL an und gebe mittels den GET und/oder Post Methoden werte mit. Also z.B. : 
	
	
	
	





```
http://www.meinserver.de/index.php/?name=alf&passwort=md5
```

Wenn ich das über eine HTML-Login Seite mache, kann ich ja eine SESSION erstellen und z.B. den Nutzernamen speichern. Somit kann dann auf den geschützen Bereicht nach erfolgreichen einloggen solange zugegriffen werden, bis der Benutzer sich ausloggt. Jetzt ist die Frage, ob ihr einen Tipp für mich habt, wie ich das PHP-Skript gestalten müsste, um von JAVA aus eine gute, ich nenne es mal Benutzerverwaltungen, zu gewährleisten.

Anbei mein bisheriges Skript für eine HTML Seite.

*Index.php*


```
<?php
session_start();

$db = mysql_connect('localhost', 'mydatabase', 'passwort');

if (!$db) {
    die('Verbindung schlug fehl: ' . mysql_error());
}
$con = mysql_select_db('mydatabase');

if(!$con){
die('Datenbank auswaehlen schlug fehl' . mysql_error());
}

if(!$_GET["user"] == "") {

	if(!$_GET["pas"] == "") {
	
	
	
		$pas = $_GET["pas"];
		$usr = $_GET["user"];
		
		$query = "SELECT * FROM Users WHERE Name = '$usr' AND Password = '$pas'";
		$mysql_query = mysql_query($query);
		
		
		$num = mysql_num_rows($mysql_query); 
		
    		if($num) { 
        		
    
			echo 'Erfolgreich verbunden';
			
			$_SESSION["username"] = $usr;
			
			
		}else{
		echo "Falsche Kombination aus Nutzername und Passwort";
		}

	}

}

?>
```

*Seite1.php*


```
<?php

session_start();

if(isset($_SESSION["username"])){

echo "Ist möglich";
}
else{
echo "nicht möglich";
}

?>
```

*Logout.php*


```
<?php
session_start();
session_destroy();

?>
```

Ich habe auch schon versucht nach einem Erfolgreichen Login eine Session ID an JAVA zu übergeben und dann mit dieser zu arbeiten, aber wirklich gelungen ist es mir nicht.

```
$sid = session_id();		
echo $sid;
```

In JAVA habe ich bis jetzt ganz primitiv diesen Code:

```
public class URL{

public URL()
  {
     InputStream is =null;
     URL url1 = new URL("http://URL/?user=test&pas=test");
     is=url1.openStream();
     rueckgabe=fromStream(is);
     System.out.println(rueckgabe);
  }
private static String fromStream(InputStream in) throws IOException
	{
	    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
	    StringBuilder out = new StringBuilder();
	    String newLine = System.getProperty("line.separator");
	    String line;
	    while ((line = reader.readLine()) != null) {
	        out.append(line);
	        out.append(newLine);
	    }
	    return out.toString();
	}
}
```


----------



## MR_UNIX (26. Jul 2014)

Was genau ist deine Frage? Wie du eine Benutzerverwaltung mit Java-Code machst, der aber auf eine PHP-Schnittstelle zugreift? Wenn ja, google am besten einfach mal nach RESTful Webservices. Aber Java kann auch auf MySQL zugreifen 
Wobei natürlich je nach Serverkonfiguration der externe Zugriff auf die DB gesperrt sein kann. Auf jeden Fall wäre das wie du es aktuell hast nicht wirklich eine sichere Login-Mechanik. Da hab ich den Server ganz schnell ausgetrickst, indem ich die hosts-Datei ändere und lokal schnell nen Webserver einrichte, der mir das "Erfolgreich" Signal ausgibt und schon bin ich drin.


----------



## LiiKe (27. Jul 2014)

Ja, meine Frage ist, wie ich das mit JAVA umsetzten kann, was ich in HTML mit den SESSIONs mache.
An meine Datenbank komme ich nicht direkt dran, und querys per http zu senden ist sehr riskant.


----------



## Anti-Banane (27. Jul 2014)

erstmal lässt du deine bisherige seite so wie sie auch im browser funktioniert ... du musst deinen java-code ändern

es gibt zwei möglichkeiten wie sessions verwaltet werden : als parameter oder cookies
SID als parameter nutzen wirklich nur die absoluten voll-****** die von session-handling keine ahnung haben
sehr viel eleganter und auch heute eigentlich nur noch zu finden : cookies

ergo : du musst deinem java-code beibringen mit cookies um zu gehen ... und dafür gibt es unter anderem [japi]CookieManager[/japi]


----------

