Android登录 - 检查用户名和密码是否与MySQL数据库匹配

时间:2016-08-26 05:57:46

标签: java php android json

我正在开发一个Android应用程序,并在应用程序开发方面有点新。 PHP和MySQL正用于后端。我正在构建登录页面,我想在JSON解析后检查用户名和密码是否与数据库匹配。我已经解析了JSON,现在只剩下检查部分了。我觉得我应该制作一个列表并使用foreach循环查询它,但我不知道如何。任何建议或代码示例将不胜感激!这是我的登录和onPostExecute方法 -

public void login(View view) {

    Log.i("username", userNameField.getText().toString());
    Log.i("password", passwordField.getText().toString());

    DownloadTask task = new DownloadTask();
    task.execute("http://something.com.php");


}

@Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);

        Log.i("Website Content", result);

        try {


           JSONArray arr = new JSONArray(result);

          for (int i = 0; i < arr.length(); i++) {

              JSONObject jsonPart = arr.getJSONObject(i);

         Log.i("user", jsonPart.getString("email"));
         Log.i("pass", jsonPart.getString("password"));

              dbUserName= jsonPart.getString("email");
              dbPassword= jsonPart.getString("password");

         // if ((userName == dbUserName) && (password == (dbPassword))){

           //  Log.i("AppInfo", "Login Successful!");

        //   }
         // else{
         //   Log.i("Appinfo", "you suck");
         //   }

          } catch (JSONException e) {
            e.printStackTrace();
        }
    }

2 个答案:

答案 0 :(得分:2)

您不需要为每个循环编写。您必须对something.com.php进行GET / POST调用,并且将您的用户名和密码发送到服务器

然后你必须检查天气,用户名和密码与你的数据库匹配。在 something.com.php

中写下该逻辑

如果匹配,请将成功标记发送到您的应用为1和0。

在您的应用中解析成功标记,并检查天气为0或1。

在此基础上,让用户登录您的应用。

请参阅:

https://www.simplifiedcoding.net/android-php-mysql-login-tutorial-android-login-app-3/

http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/

答案 1 :(得分:1)

您需要向服务器发送登录详细信息并检查服务器是否成功或失败,然后按照您应用中的响应进行操作以下是它的简要示例

  1. 首先从编辑文本中获取用户名和密码
  2. String UserName=EditText_UserName.getText().toString();
    String Password=EditText_Password.getText().toString();
    
    1. 将这些字符串发送到AsyncTask,就像这样
    2.   

      new asynctask().execute(UserName,Password)

      1. 在doInBackground中获取用户名和密码(String ... params)
      2.   

        Phone=params[0];

             

        Password=params[1];

        3:将用户名和密码编码为单个字符串,如下所示

        > String data = URLEncoder.encode("UserName", "UTF-8") + "=" +
        > URLEncoder.encode(UserName, "UTF-8");
        > data += "&" + URLEncoder.encode("Password", "UTF-8") + "=" + URLEncoder.encode(Password, "UTF-8");
        

        4:现在借助BufferedWriter

        将数据写入网址
        URL url = new URL("http://www.Example.com/Login.php");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("POST");
        connection.setDoInput(true);
        connection.setDoOutput(true);
        
        OutputStream os = connection.getOutputStream();
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
        writer.write(data);
        writer.flush();
        writer.close();
        os.close();
        

        5:现在在Php文件中比较结果与数据库并将响应发送回Android应用程序,如此

        //Get Values first 
        $UserName=$_POST['UserName'];
        $Password =$_POST['Password'];
        
        //then compare it in SQL DATABASE
        $sql = "SELECT * FROM mobile_App WHERE  UserName = '$UserName' AND Password = '$Password'";
        
        //Send Response to app if query success
        $response['status'] = 'SUCCESS'; 
        
        //else send failed
        

        6:检查应用程序中的响应代码

        int responseCode = connection.getResponseCode();//It will return 200 if Connection Established with server
        //Get Success String or Fail String By InputStream
        

        7:最后比较服务器成功或失败的字符串,然后再做进一步。