通过 json 从 MySQL-DB 中使用 java (eclipse) 检索字符串



我正在尝试为Android(在Eclipse中)编写登录系统,并且必须从外部MySQL-DB获取数据。

来源 我为它获取了代码:连接到 MySQL 数据库

我尝试从中获取数据的网站在这里。(我知道有一些安全问题,blabla,这不是我现在的问题^^)

我遇到的问题是,当我尝试运行应用程序时,出现错误"找不到密码"。此错误在此代码中捕获:

ArrayList<String> passwort = new ArrayList<String>();
ArrayList<String> benutzer = new ArrayList<String>();
try{
  jArray = new JSONArray(result);
  JSONObject json_data=null;
  for(int i=0;i<jArray.length();i++){
         json_data = jArray.getJSONObject(i);
         passwort.add(json_data.getString("pw"));
         benutzer.add(json_data.getString("benutzer"));
     }
  Intent intent = new Intent(this, MainActivity.class);
  intent.putExtra("arrayBenutzerExtra", benutzer);
  intent.putExtra("arrayPasswortExtra", passwort);
  startActivity(intent);
    }
    catch(JSONException e1){
      Toast.makeText(getBaseContext(), "No Password found" ,Toast.LENGTH_LONG).show();
    } catch (ParseException e1) {
        e1.printStackTrace();
}

另外,这是我与网站连接的代码,但这似乎不是问题,尽管我没有收到有关此的错误消息!

try{
 HttpClient httpclient = new DefaultHttpClient();
 HttpPost httppost = new HttpPost("http://winklermarkus.at/appconnection.php");
 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
 HttpResponse response = httpclient.execute(httppost);
 HttpEntity entity = response.getEntity();
 is = entity.getContent();
   }catch(Exception e){
     Log.e("log_tag", "Error in http connection"+e.toString());
   }

.php文件的代码在这里:

$sql_pw = "SELECT ". "Passwort ". "FROM ". "benutzerdaten ";
    $result_pw = mysql_query ($sql_pw); 
    $data_pw = mysql_fetch_array ($result_pw);
    $pw = $data_pw["Passwort"];
    $sql_benutzer = "SELECT ". "Email ". "FROM ". "benutzerdaten ";
    $result_benutzer = mysql_query ($sql_benutzer); 
    $data_benutzer = mysql_fetch_array ($result_benutzer);
    $benutzer = $data_benutzer["Email"];
print(json_encode($pw));
print(json_encode($benutzer));
mysql_close();
?>

正如 Perception 提到的,我没有得到有效的 JSON 输出,这可能与我试图一次传输 2 个字符串有关吗?

你的PHP代码没有做你认为它正在做的事情。我不能建议修复它,因为您已经创建了一个重大的安全漏洞。

作为替代策略,不是将所有密码和所有电子邮件发送到客户端(以不关联的方式),而是将客户端散列的密码和电子邮件发送到服务(通过SSL)。然后在服务端查询数据库中是否有电子邮件/传递的组合。如果返回登录成功,否则返回登录失败。

最新更新