S
SJay96
Neues Mitglied
- 0
Hallo zusammen!
Ich bin gerade neu hier und habe da ein kleines Problem bei einem Lernprojekt. Ich versuche ein Login zu erstellen. Das Serverseitige mache ich über PHP und eine Mysql Datenbank. Clientseitig arbeite ich mit java eclipse.
Ich habe auf einer meiner Activitys(Login) zwei EditText felder. Hier soll der Name und ein Passwort hineingeschrieben werden. Nun möchte ich mit einem Click auf einen Button mit der Id BtnLogin und der im xml definierten onClick funktion onBtnLogonClick die Daten an das PHP file senden. Dieses soll mir dann einen Fehler zurückgeben oder die Meldung, dass das Login funktioniert hat. Hier mein Code dazu:
PHP
Die abfrage und so funktioniert alles. Nun der Java Code für den Android Client:
Jedes Mal wenn ich nun den Button btnLogin betätige und die Funktion onBtnLogonClick ausgeführt wird, stürtz die App ab und es heisst, das die App geschlossen wurde. Wenn ich allerdings den teil mit dem response rausnehme, funktioniert es bzw die App stürtzt nicht ab.
Wäre froh um rasche Hilfe
vielen Dank
Ich bin gerade neu hier und habe da ein kleines Problem bei einem Lernprojekt. Ich versuche ein Login zu erstellen. Das Serverseitige mache ich über PHP und eine Mysql Datenbank. Clientseitig arbeite ich mit java eclipse.
Ich habe auf einer meiner Activitys(Login) zwei EditText felder. Hier soll der Name und ein Passwort hineingeschrieben werden. Nun möchte ich mit einem Click auf einen Button mit der Id BtnLogin und der im xml definierten onClick funktion onBtnLogonClick die Daten an das PHP file senden. Dieses soll mir dann einen Fehler zurückgeben oder die Meldung, dass das Login funktioniert hat. Hier mein Code dazu:
PHP
PHP:
<?php
#Überprüfung ob Benutzername und Passwort vorhanden sind
if(isset($_POST["Login_Name"]) && isset($_POST["Login_Password"]) && $_POST["Login_Name"] != "" && $_POST["Login_Password"] != ""){
#Variablen deklarieren
$user_name = $_POST["Login_Name"];
$user_password = $_POST["Login_Password"];
#Verbindung zur Datenbank
$connection = mysqli_connect("mysql.lima-city.de", "Benutzername", "passwort", "db_287071_1");
#Verbindung überprüfen
if(mysqli_connect_errno()){
echo "Datenbankverbindung fehlgeschlagen! Fehler: ".mysqli_connect_error();
exit();
}
#mysql_injection verhindern
$user_name = mysqli_real_escape_string($connection, $user_name);
#Abfrage erstellen
$user_exist = mysqli_query($connection, "Select user_name from tbl_user where user_name = '$user_name' and user_password = '$user_password';");
#Überprüfen ob der Benutzer existiert
if(mysqli_num_rows($user_exist)==1){
echo "Sie wurden einloggt!";
}else{
echo "Benutzername nicht vorhanden!";
}
}else{
echo "Daten nicht vorhanden!";
}
?>
Die abfrage und so funktioniert alles. Nun der Java Code für den Android Client:
Code:
package com.example.sc_tank;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class LoginActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.login, menu);
return true;
}
public void onBtnHomeClick(View view){
startActivity(new Intent(this, MainActivity.class));
}
public void onBtnLoginClick(View view){
startActivity(new Intent(this, LoginActivity.class));
}
public void onBtnDataClick(View view){
startActivity(new Intent(this, DataActivity.class));
}
public void onBtnLogonClick(View view) throws ClientProtocolException, IOException{
EditText login_name;
login_name = (EditText) findViewById(R.id.LoginName);
EditText login_password;
login_password = (EditText) findViewById(R.id.LoginPassword);
// Post übergabeparameter mit Wert und Name erstellen
List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2);
nameValuePair.add(new BasicNameValuePair("Login_Name", login_name.toString()));
nameValuePair.add(new BasicNameValuePair("Login_Password", login_password.toString()));
//Http Request erstellen
HttpParams httpParameters = new BasicHttpParams();
// Http Client erstellen
HttpClient httpclient = new DefaultHttpClient(httpParameters);
// Http Post erstellen
HttpPost httppost = new HttpPost("http://www.sjay96.lima-city.de/app/Logon.php");
//Werte für URL lesbar machen
httppost.setEntity(new UrlEncodedFormEntity(nameValuePair));
//Response erstellen
HttpResponse response = httpclient.execute(httppost);
//inhalt des response holen
HttpEntity entity = response.getEntity();
//inhalt des respons in String variable speichern
String result = EntityUtils.toString(entity);
}
}
Jedes Mal wenn ich nun den Button btnLogin betätige und die Funktion onBtnLogonClick ausgeführt wird, stürtz die App ab und es heisst, das die App geschlossen wurde. Wenn ich allerdings den teil mit dem response rausnehme, funktioniert es bzw die App stürtzt nicht ab.
Wäre froh um rasche Hilfe
vielen Dank
Zuletzt bearbeitet: