본문 바로가기
Android

[Android/java] php&mysql 사용해서 로그인

by noddu 2022. 1. 24.
728x90
반응형
public class LoginRequest extends StringRequest {

    // 서버 URL 설정 ( PHP 파일 연동 )
    final static private String URL = "IP주소/login.php";
    private Map<String, String> map;


    public LoginRequest(String userEmail, String userPassword, Response.Listener<String> listener) {
        super(Method.POST, URL, listener, null);

        map = new HashMap<>();
        map.put("userEmail",userEmail);
        map.put("userPassword", userPassword);

    }

    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
        return map;
    }
}

다음과같이 LoginRequest파일을 만든다.

 


 

● MainActivity 전체코드

// Login 클릭 감지
RelativeLayout_login.setClickable(true);
RelativeLayout_login.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        String userEmail = TextInputEditText_email.getText().toString();
        String userPassword = TextInputEditText_password.getText().toString();

        Response.Listener<String> responseListener = new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {

                try {
                    // TODO : 인코딩 문제때문에 한글 DB인 경우 로그인 불가

                    System.out.println("aaa" + response);

                    JSONObject jsonObject = new JSONObject(response);
                    boolean success = jsonObject.getBoolean("success");
                    if (success) { // 로그인에 성공한 경우
                        String userEmail = jsonObject.getString("userEmail");
                        String userPassword = jsonObject.getString("userPassword");

                        Toast.makeText(getApplicationContext(),"로그인에 성공하였습니다.",Toast.LENGTH_SHORT).show();
                        
                        Intent intent = new Intent(MainActivity.this, LoginActivity.class);
                        intent.putExtra("userEmail", userEmail);
                        intent.putExtra("userPassword", userPassword);
                        startActivity(intent);

                        Log.d("Success",userEmail+userPassword);
                    } else { // 로그인에 실패한 경우
                        Toast.makeText(getApplicationContext(),"로그인에 실패하였습니다.",Toast.LENGTH_SHORT).show();
                        Log.d("Failed",userEmail+userPassword);
                        return;
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        };
        LoginRequest loginRequest = new LoginRequest(userEmail, userPassword, responseListener);
        RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
        queue.add(loginRequest);
    }

 

 

 

 


 

 

Login버튼 onClick 안에  Response Listener를 만들고

response값이 잘 들어오는지 출력해봤는데 잘 나온다

 


● MainActivity 

JSONObject jsonObject = new JSONObject(response);
boolean success = jsonObject.getBoolean("success");
if (success) { // 로그인에 성공한 경우
    String userEmail = jsonObject.getString("userEmail");
    String userPassword = jsonObject.getString("userPassword");

    Toast.makeText(getApplicationContext(),"로그인에 성공하였습니다.",Toast.LENGTH_SHORT).show();

    Intent intent = new Intent(MainActivity.this, LoginActivity.class);
    intent.putExtra("userEmail", userEmail);
    intent.putExtra("userPassword", userPassword);
    startActivity(intent);

성공하면 LoginActiviry로 Email과 Password가 intent로 전송된다.

 

 


● LoginActivity 

Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String userEmail = bundle.getString("userEmail");
String userPassword = bundle.getString("userPassword");

bundle.putString("email",userEmail);
bundle.putString("password",userPassword);
fragment_user.setArguments(bundle);

이 정보는 Fragment에 출력해볼거라

bundle을 사용해 email, password라는 key로 UserFragment에 넘긴다

 

 


● UserFragmnet

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_user, container, false);
    tv_email = view.findViewById(R.id.tv_email);
    tv_password = view.findViewById(R.id.tv_password);
    btn_news = view.findViewById(R.id.btn_news);


    Bundle bundle = getArguments();
    String email = bundle.getString("email");
    String password = bundle.getString("password");

    tv_email.setText(email);
    tv_password.setText(password);

Fragment는 onCreateView안에 작성한다

Activity에서 bundle에서 setArguments했으니

bundle에서 getArguments해서 eamail과 password의 값을 가져오고

textView에 넣어봤다

반응형