Fehler bei der Datenabfrage(mysql-php)

C

coreytaylor211

Fortgeschrittenes Mitglied
5
Hallo zusammen,

Ich habe ein Problem, ich versuche die Verbindung zwischen App und MySQL Server zum laufen zu kriegen.
Die Registrierung geht, einloggen nicht.

Ich bin mir auch sicher das der Fehler in der PHP Datei liegt hier einmal die Datei:
Code:
<?php>
require "conn.php";
$user_name = $_POST["login_name"];
$user_pass = $_POST["login_pass"];
$mysql_qry = "select name from AppData where username like '$user_name' and password like '$user_pass';";
$result = mysqli_query($conn, $mysql_qry);
if(mysqli_num_rows($result) > 0){
    switch($row = mysqli_fetch_assoc($result)){
        $output = $row['username'];
        $output2 = $row['password'];
    }
    echo ($output.$output2);
}else{
   
}
?>

Ich bin nicht sicher ob ich die row's richtig abfrage weil in Android Studio bleibt der response immer leer. Hier mal ein ausschnitt aus Android Studio :
Code:
                    InputStream inputStream = httpURLConnection.getInputStream();
                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1"));
                    response = "";
                    line = "";
                    Log.d("LOG_TAG", "Response: " + response);
                    while ((line = bufferedReader.readLine()) != null) {
                        response += line;
                    }
                    Log.d("LOG_TAG", "Response: " + response);
                    bufferedReader.close();
                    inputStream.close();
                    httpURLConnection.disconnect();
Hier sollte er ja eigentlich den Input bekommen, was aber leider nicht passiert. Ich wäre für jeden Tipp dankbar.

Mit freundlichen grüßen
 
Lieben Dank, aber leider geht das auch nicht ich hatte mal vor ca 1 Jahr eine Lösung, die ist aber leider weg. Was ich komisch finde ist das nix bei Android Studio ankommt. Der müsste ja wenn ich den String oder sonstwas per echo zurück sende darauf reagieren oder nicht ?

In LogCat sieht das ganze dann so aus:
Code:
09-09 19:23:17.778 16070-17462/androidappdev.de.warthetimeisover D/LOG_TAG: login_name: hallologin_pass: 123456789
09-09 19:23:17.781 16070-17462/androidappdev.de.warthetimeisover I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
09-09 19:23:17.781 16070-17462/androidappdev.de.warthetimeisover I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
09-09 19:23:17.814 16070-17462/androidappdev.de.warthetimeisover D/LOG_TAG: login_name: hallologin_pass: 123456789
09-09 19:23:17.894 16070-17462/androidappdev.de.warthetimeisover D/LOG_TAG: Response:

Die Meldung mit dem httpLog macht mir ein wenig Sorgen,aber ich konnte nix weiter dagegen machen.
 
Was sagt denn dein echo , wenn du die seite mit einem desktop browser aufrufst ??
 
  • Danke
Reaktionen: coreytaylor211
Nix, auch wenn ich in der Datei die Daten fest eintrage.

Ich finde es komisch das nur bei der login.php der Fehler kommt. Ist hier vielleicht einer im Forums der php drauf hat :) für ihn ist das wahrscheinlich ein zwinkern und fertig :D
 
Zuletzt bearbeitet:
Hat keiner mehr eine Idee ? Ich suche wirklich nur eine ganz einfache Lösung. Das PHP Skript soll einfach nur aus dem Usernamen und dem Passwort ein String machen und ihn als Response zurück an Android schicken.

Ich hatte die Lösung mal das hat super funktioniert, aber leider habe ich die Dateien nicht mehr.
 
Ich würde wie folgt vorgehen:

  • Ist der Eintrag in der Datenbank vorhanden?
  • Wenn ja, dann die POST abfrage aus der PHP Seite raus nehmen und direkt die Daten also Username und Passwort dort einsetzten und dann die Seite Aufrufen und die Ausgabe ansehen.
Gruß
 
Ja das hatte ich weiter oben schon geschrieben das ich das versucht habe, aber da steht nix.
 
Sehe ich das richtig, dass du im SQL nur die Spalte "name" selektierst, dann in PHP beim Ergebnis aber auf die Spalten "username" und "password" zugreifst? Dass die dann leer oder undefiniert sind, dürfte nicht verwundern.

EDIT: Nochwas: Ich kenne jetzt PHP nicht so wirklich, aber werden da einfach die Variablen aus den http-POST ungeprüft in den SQL-String eingesetzt? Falls ja: Tu das nie, nie, nie, nie, nie, niemals nie!! (-> SQL-Injection)
 
@coreytaylor211
Versuche mal folgendens: Wenn das nicht funktoniert, dann zeige nochmal deine conn.php
Code:
<?php
require_once __DIR__ . '/conn.php';
$user_name = $_POST["login_name"];
$user_pass = $_POST["login_pass"];

$mysql_qry = "SELECT
           username
           password
         FROM
           AppData
         WHERE
           username = '".mysqli_real_escape_string($conn, trim($user_name))."' AND
  password = '".mysqli_real_escape_string($conn, trim($user_pass))."'
           ";
          
$result = mysqli_query($conn,$mysql_qry) OR die(mysql_error());
$row = mysqli_fetch_assoc($result);
if (mysqli_num_rows($result) > 0)
{
   echo $row['username'] .  "  " . $row['password'] . "\r\n"; 
}
else
{      
   echo "Username zusammen mit dem Passwort nicht gefunden!"; 
}

?>

Hier noch ein Auszug aus der JSON PRASER wie dieser ein Response auführt:

Code:
// function get json from url
 // by making HTTP POST or GET mehtod
 public JSONObject makeHttpRequest(String url, String method,
 List<NameValuePair> params) {
 // Making HTTP request
 try {
 // check for request method
 if(method == "POST"){
 // request method is POST
 // defaultHttpClient
 DefaultHttpClient httpClient = new DefaultHttpClient();
 HttpPost httpPost = new HttpPost(url);
 httpPost.setEntity(new UrlEncodedFormEntity(params));
 HttpResponse httpResponse = httpClient.execute(httpPost);
 HttpEntity httpEntity = httpResponse.getEntity();
 is = httpEntity.getContent();
 }else if(method == "GET"){
 // request method is GET
 DefaultHttpClient httpClient = new DefaultHttpClient();
 String paramString = URLEncodedUtils.format(params, "utf-8");
 url += "?" + paramString;
 HttpGet httpGet = new HttpGet(url);
 HttpResponse httpResponse = httpClient.execute(httpGet);
 HttpEntity httpEntity = httpResponse.getEntity();
 is = httpEntity.getContent();
 } 
 } catch (UnsupportedEncodingException e) {
 e.printStackTrace();
 Log.d("JSONFehler", url);
 } catch (ClientProtocolException e) {
 e.printStackTrace();
 Log.d("JSONFehler", url);
 } catch (IOException e) {
 e.printStackTrace();
 Log.d("JSONFehler", url);
 }
 try {
 BufferedReader reader = new BufferedReader(new InputStreamReader(
 is, "iso-8859-1"), 8);
 StringBuilder sb = new StringBuilder();
 String line = null;
 while ((line = reader.readLine()) != null) {
 sb.append(line + "\n");
 }
 is.close();
 json = sb.toString();
 Log.d("JSONRückgabe", sb.toString() + "||" + url);
 } catch (Exception e) {
 Log.e("Buffer Error", "Error converting result " + e.toString());
 }
 // try parse the string to a JSON object
 try {
 jObj = new JSONObject(json);
 //Log.i("JSON Ausgabe",json + "|" + url);
 } catch (JSONException e) {
 Log.e("JSON Parser", "Error parsing data: " + e.toString() + "||" + url + "||" + json);
 }
 // return JSON String
 return jObj;
 }
 
Zuletzt bearbeitet:

Ähnliche Themen

M
Antworten
3
Aufrufe
166
moin
M
B
Antworten
0
Aufrufe
689
basementmedia
B
D
Antworten
17
Aufrufe
408
datNeMo
D
Zurück
Oben Unten