thisisme
Erfahrenes Mitglied
- 49
Hallo,
Ich habe vor in meine App einen Login einzubauen, dabei wird ein Hash vom Passwort generiert,
welcher dann zusammen mit dem Benutzernamen per HttpGet and meinen Webserver gesendet werden soll, welcher daraufhin mit "true" oder "false" antworten soll.
Jedenfalls funktioniert das nicht so, wie ich will, denn in "result" steht einfach gar nichts, ich habe es dann mal mit dem "normalen" eclipse getestet -
und siehe da ich bekomme true/false zurück, so wie es soll - warum geht das in Android denn nicht?
(Testgerät ist ein HTC One M8 mit Android 4.4.4)
hier der code:
MainActivity.java:
(hab ein paar unwichtige Methoden gekürzt, damit der Thread nicht unnötig lang wird)
HttpConnect.java:
und hier ist noch die http_get.php:
Danke für Vorschläge!
thisisme
Ich habe vor in meine App einen Login einzubauen, dabei wird ein Hash vom Passwort generiert,
welcher dann zusammen mit dem Benutzernamen per HttpGet and meinen Webserver gesendet werden soll, welcher daraufhin mit "true" oder "false" antworten soll.
Jedenfalls funktioniert das nicht so, wie ich will, denn in "result" steht einfach gar nichts, ich habe es dann mal mit dem "normalen" eclipse getestet -
und siehe da ich bekomme true/false zurück, so wie es soll - warum geht das in Android denn nicht?
(Testgerät ist ein HTC One M8 mit Android 4.4.4)
hier der code:
MainActivity.java:
Code:
<---package--->
<---imports--->
public class MainActivity extends ActionBarActivity {
private EditText pass;
private Button einloggen;
private EditText user;
private TextView debuggingOutput;
String username, passwort, hash, result;
HttpConnect http;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Variablenzuweisung des Layouts
pass = (EditText) findViewById(R.id.passwort);
einloggen = (Button) findViewById(R.id.bt_einloggen);
user = (EditText) findViewById(R.id.username);
// Debug
debuggingOutput = (TextView) findViewById(R.id.debuggingOutput);
einloggen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
hole_daten();
if (!passwort.contentEquals("") & !username.contentEquals("")) {
try { hash = generiereHash(passwort); }
// Fehler bei der Hash Generierung abfangen :
catch (NoSuchAlgorithmException e) {e.printStackTrace();}
catch (UnsupportedEncodingException e) {e.printStackTrace();}
http = new HttpConnect("http://my-server-url/http_get.php?user="+username+"&hash="+hash);
try {http.sendGet();}
catch (Exception e) {e.printStackTrace();}
result = http.getResult();
dbg("RESULT:"+result);
if(result.equals("false")) Toast.makeText(getApplicationContext(), R.string.wrongPassword, Toast.LENGTH_LONG).show();
else {
Toast.makeText(getApplicationContext(), "PW korrekt", Toast.LENGTH_LONG).show();
//TODO: OPEN NEW ACTIVITY!
}
}
// Leere Eingaben abfangen
else if(passwort.contentEquals("") & username.contentEquals("")) Toast.makeText(getApplicationContext(), R.string.invalidInput, Toast.LENGTH_LONG).show();
else if(passwort.contentEquals("") & !username.contentEquals("")) Toast.makeText(getApplicationContext(), R.string.invalidInputNoPassword, Toast.LENGTH_LONG).show();
else if(!passwort.contentEquals("") & username.contentEquals("")) Toast.makeText(getApplicationContext(), R.string.invalidInputNoUsername, Toast.LENGTH_LONG).show();
}
});
}
public String generiereHash(String passwort) throws NoSuchAlgorithmException, UnsupportedEncodingException{
<.....>
}
private static String convertToHex(byte[] data)
{
<.....>
}
public void hole_daten(){
username = user.getText().toString();
passwort = pass.getText().toString();
}
public void dbg(String s){
debuggingOutput.setText(debuggingOutput.getText().toString() + "\n" + s);
}
public void dbg(String s, boolean clear){
debuggingOutput.setText("DEBUG OUT: \n" + s);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
<.....>
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
<.....>
}
}
HttpConnect.java:
Code:
<-- package -->
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpConnect {
private final String USER_AGENT = "Mozilla/5.0";
public String url;
public String result;
public HttpConnect(String Url){
url = Url;
result = "";
}
public String getResult(){
return result;
}
// HTTP GET request
public void sendGet() throws Exception {
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", USER_AGENT);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
result = response.toString();
}
}
und hier ist noch die http_get.php:
PHP:
<?php
$db = mysqli_connect("**","**","**","**");
if(!$db){
exit("Verbindungsfehler: ".mysqli_connect_error());
}
$user = urldecode($_GET['user']);
$hash = urldecode($_GET['hash']);
$query = "SELECT * FROM test WHERE user='".$user."'";
$get = mysqli_query($db, $query);
while($row = mysqli_fetch_object($get))
{
$validHash = $row->password;
}
if($hash == $validHash) $valid="true";
else $valid="false";
print $valid;
?>
Danke für Vorschläge!
thisisme