登录正确时,Android按钮链接到另一个页面

时间:2017-04-02 14:11:32

标签: java php android database

我有下面的代码,当前有一个id和密码的登录名,当点击链接时我希望它只有在登录正确的时候才能进入个人资料页面,只要你可以输入你想要的任何内容或者什么都没有,点击登录,这将带您进入个人资料页面。有人可以告诉我如何改进我的代码,以便登录按钮只会在登录详细信息正确的情况下链接到配置文件页面,根据数据库中的内容?如果需要,我可以上传更多代码。感谢

public class MainActivity extends ActionBarActivity {

EditText doctor_number, password;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    doctor_number = (EditText)findViewById(R.id.etDoctorNumber);
    password = (EditText)findViewById(R.id.etPassword);
    final Button btnLogin = (Button) findViewById(R.id.btnLogin);

    btnLogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            OnLogin(v);
            //Intent profileIntent = new Intent(MainActivity.this, Profile.class);
            //MainActivity.this.startActivity(profileIntent);
        }
    });
}

public void OnLogin(View view){
    String str_doctor_number = doctor_number.getText().toString();
    String str_password = password.getText().toString();
    String type = "Login";

    BackgroundWorker backgroundWorker = new BackgroundWorker(this);
    backgroundWorker.execute(type, str_doctor_number, str_password);
}
}

==== BackgroundWorker.java

public class BackgroundWorker extends AsyncTask<String, Void, String> {
    Context context;
    AlertDialog alertDialog;
    BackgroundWorker (Context ctx){
        context = ctx;
     }

@Override
protected String doInBackground(String... params) {
    String type = params[0];
    String login_url = "";
    String register_url = "";
    if (type.equals("Login")) {
        try {
            String doctorNumber = params[1];
            String password = params[2];
            URL url = new URL(login_url);
            HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setDoInput(true);
            OutputStream outputStream = httpURLConnection.getOutputStream();
            BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
            String post_data = URLEncoder.encode("doctor_number", "UTF-8")+"="+URLEncoder.encode(doctorNumber, "utf-8")+"&"
            +URLEncoder.encode("password", "UTF-8")+"="+URLEncoder.encode(password, "utf-8");
            bufferedWriter.write(post_data);
            bufferedWriter.flush();
            bufferedWriter.close();
            outputStream.close();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1"));
            String result ="";
            String line ="";
            while ((line = bufferedReader.readLine()) != null){
                result += line;
            }
            bufferedReader.close();
            inputStream.close();
            httpURLConnection.disconnect();
            return result;
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else if (type.equals("Register")){
        try {
            String patient_name = params[1];
            String check_in_date = params[2];
            String room_number = params[3];
            String bed_number = params[4];
            String notes = params[5];
            URL url = new URL(register_url);
            HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setDoInput(true);
            OutputStream outputStream = httpURLConnection.getOutputStream();
            BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
            String post_data = URLEncoder.encode("patient_name", "UTF-8")+"="+URLEncoder.encode(patient_name, "utf-8")+"&"
                    + URLEncoder.encode("check_in_date", "UTF-8")+"="+URLEncoder.encode(check_in_date, "utf-8")+"&"
                    + URLEncoder.encode("room_number", "UTF-8")+"="+URLEncoder.encode(room_number, "utf-8")+"&"
                    + URLEncoder.encode("bed_number", "UTF-8")+"="+URLEncoder.encode(bed_number, "utf-8")+"&"
                    + URLEncoder.encode("notes", "UTF-8")+"="+URLEncoder.encode(notes, "utf-8");
            bufferedWriter.write(post_data);
            bufferedWriter.flush();
            bufferedWriter.close();
            outputStream.close();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1"));
            String result ="";
            String line ="";
            while ((line = bufferedReader.readLine()) != null){
                result += line;
            }
            bufferedReader.close();
            inputStream.close();
            httpURLConnection.disconnect();
            return result;
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return null;
}

@Override
protected void onPreExecute() {
    alertDialog = new AlertDialog.Builder(context).create();
    alertDialog.setTitle("Login status: ");
}

@Override
protected void onPostExecute(String result) {
    if (result.contains("Login Successful")){
        Intent profileIntent = new Intent(context, Profile.class);
        context.startActivity(profileIntent);
    } else {
        alertDialog.setMessage(result);
        alertDialog.show();
    }
}

@Override
protected void onProgressUpdate(Void... values) {
    super.onProgressUpdate(values);
}
}

3 个答案:

答案 0 :(得分:0)

试试这个:

btnLogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            OnLogin(v);
        }
    });

现在在BackgroundWorker.java中 进行以下更改:

@Override
protected void onPostExecute(String result) {
    if(result.equalsIgnoreCase("login successful")){
        Intent profileIntent = new Intent(MainActivity.this, Profile.class);
            MainActivity.this.startActivity(profileIntent);
    } else {
        alertDialog.setMessage(result);
        alertDialog.show();
    }
}

答案 1 :(得分:0)

尝试将其改编为您的代码:

public boolean verifyData(String user, String password){
    boolean authenticated = false;
    try {
        int attempts;
        Statement cmd = connection.createStatement();
        String query = "SELECT * FROM tableuserinfo";
        ResultSet res = cmd.executeQuery(query);
        String sqlUser = null;
        String sqlPsw = null;

        while(res.next()){
             sqlUser = res.getString("user");
             sqlPsw = res.getString("psw");

             if(sqlUser == user){

                 if(sqlPsw == password){
                     authenticated = true;
                     res.close();                      
                     break;
                 }
                 else{

                 }
             }
        }
    } catch (SQLException | NullPointerException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return authenticated;
    }
    return authenticated;
}

在这些代码行中,您向数据库询问您在函数中传递的用户名和密码(在您的情况下是doctor_number和密码),如果正确则返回true,否则返回false。

答案 2 :(得分:0)

你的java代码似乎没问题,所以试试把它放在你文件末尾的php文件中

mysqli_close($db);         
  exit();