반응형
예제 출처 : https://www.inflearn.com/course
이번에는 로그인 및 메인화면을 구현하는 예제입니다.
저번 소스에서 Login.php이 잘못되었네요.
다음 파일이 제대로 된 소스입니다.
Login.php
<?php
$con = mysqli_connect('localhost', 'root', 'qwer1234', 'proj_manager');
$userID = $_POST["userID"];
$userPassword = $_POST["userPassword"];
$statement = mysqli_prepare($con, "SELECT * FROM USER WHERE userID = ? AND userPassword = ?");
mysqli_stmt_bind_param($statement, "ss", $userID, $userPassword);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $userID, $userPassword, $userName, $userAge);
$response = array();
$response["success"] = false;
while(mysqli_stmt_fetch($statement)){
$response["success"] = true;
$response["userID"] = $userID;
$response["userPassword"] = $userPassword;
$response["userName"] = $userName;
$response["userAge"] = $userAge;
}
echo json_encode($response);
?>
LoginRequest.java
package com.example.kch.proj_manager_v4;
import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;
import java.util.HashMap;
import java.util.Map;
public class LoginRequest extends StringRequest {
//현재 안드로이드앱을 에뮬레이터로 돌리므로 에뮬레이터가 설치된 서버에 있는 아파치 서버에 접근하려면
//다음과 같이 10.0.2.2:포트번호 로 접근해야합니다 저는 8080 포트를 써서 다음과 같이 했습니다
private Map<String, String> parameters;
//생성자
public LoginRequest(String userID, String userPassword, Response.Listener<String> listener){
super(Method.POST, URL, listener, null);
parameters = new HashMap<>();
parameters.put("userID", userID);
parameters.put("userPassword", userPassword);
}
//추후 사용을 위한 부분
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return parameters;
}
}
LoginActivity.java
package com.example.kch.proj_manager_v4;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//강의에서 final을 추가시켜줌
final EditText idText = (EditText)findViewById(R.id.idText);
final EditText passwordText = (EditText)findViewById(R.id.passwordText);
final Button loginbtn = (Button)findViewById(R.id.loginbtn);
final TextView registerbtn = (TextView)findViewById(R.id.registerbtn);
registerbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent registerIntent = new Intent(LoginActivity.this, RegisterActivity.class);
LoginActivity.this.startActivity(registerIntent);
}
});
loginbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String userID = idText.getText().toString();
final String userPassword = passwordText.getText().toString();
//4. 콜백 처리부분(volley 사용을 위한 ResponseListener 구현 부분)
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try{
JSONObject jsonResponse = new JSONObject(response);
boolean success = jsonResponse.getBoolean("success");
Toast.makeText(getApplicationContext(), "success"+success, Toast.LENGTH_SHORT).show();
//서버에서 보내준 값이 true이면?
if(success){
//Toast.makeText(getApplicationContext(), "success", Toast.LENGTH_SHORT).show();
String userID = jsonResponse.getString("userID");
String userPassword = jsonResponse.getString("userPassword");
//로그인에 성공했으므로 MainActivity로 넘어감
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
intent.putExtra("userID", userID);
intent.putExtra("userPassword", userPassword);
LoginActivity.this.startActivity(intent);
}else{//로그인 실패시
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
builder.setMessage("Login failed")
.setNegativeButton("retry", null)
.create()
.show();
}
}catch(JSONException e){
e.printStackTrace();
}
}
};
LoginRequest loginRequest = new LoginRequest(userID, userPassword, responseListener);
RequestQueue queue = Volley.newRequestQueue(LoginActivity.this);
queue.add(loginRequest);
}
});
}
}
실행 화면
다음과 같이 등록한 아이디와 패스워드를 입력하고 Login 버튼을 누르면
다음과 같이 로그인에 성공하게 되고 메인화면으로 가게됩니다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 - 프로젝트8. 회원 검색 기능 추가 (1) | 2018.04.13 |
---|---|
안드로이드 - 프로젝트7. 회원 삭제 및 관리자 기능 (0) | 2018.04.09 |
안드로이드 - 프로젝트6. 회원목록을 리스트뷰로 출력하기 (1) | 2018.02.17 |
안드로이드 - 프로젝트5. 회원목록 출력하기 (0) | 2018.02.17 |
안드로이드 - 프로젝트3. 데이터베이스 및 서버 구축 (20) | 2017.12.24 |
안드로이드 - 프로젝트2. 액티비티 화면 전환 (0) | 2017.10.09 |
안드로이드 - 프로젝트1. 애플리케이션 화면 디자인 (0) | 2017.10.06 |
안드로이드 - 8. 레이아웃(layout) (0) | 2017.10.06 |