현재 안드로이드 로그인 화면을 구현중인데요.
회원 가입 db는 연동이 되었는데 로그인 화면도 비슷하게 만들었음에도 500에러가 뜨네요..
크롬에서 login.php파일에 접속하면 접속은 되었다고 나옵니다(MySql connection is completed)
로직은 loginScreen화면에서 아이디와 비밀번호를 입력하고 로그인 버튼을 누르면 db에서 아이디와 비밀번호가 일치하는지 알아옵니다.
[loginRequest.java]
public class LoginRequest extends StringRequest {
final static private String URL = "http://14.50.23.146/login.php";
private Map<String, String> map;
public LoginRequest(String userId, String userPw, Response.Listener<String> listener) {
super(Request.Method.POST, URL, listener, null);
map = new HashMap<>();
map.put("userId", userId);
map.put("userPw", userPw);
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return map;
}
}
[loginScreen]
public class loginScreen extends AppCompatActivity {
private EditText userId, userPw;
private Button loginBtn, signUpBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_screen);
userId = findViewById(R.id.id);
userPw = findViewById(R.id.pw);
loginBtn = (Button)findViewById(R.id.loginBtn);
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String id = userId.getText().toString();
String pw = userPw.getText().toString();
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
boolean success = jsonObject.getBoolean("success");
if(success) {
Toast.makeText(getApplicationContext(), "로그인 성공", Toast.LENGTH_LONG).show();
Intent intent = new Intent(getApplicationContext(), activitiy_main.class);
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), "로그인 실패", Toast.LENGTH_LONG).show();
return;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
LoginRequest loginRequest = new LoginRequest(id, pw, responseListener);
RequestQueue queue = Volley.newRequestQueue(loginScreen.this);
queue.add(loginRequest);
}
});
// 회원가입 화면 이동
signUpBtn = (Button)findViewById(R.id.signUpBtn);
signUpBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), signUpScreen.class);
startActivity(intent);
}
});
}
}
[PHP파일]
<?php
$host = "localhost";
$dbUser = "root";
$db_pw = "1234";
$db_name = "user";
//mysqli_connect("localhost", "사용자 아이디", "패스워드", "사용할 DB")
$connection = mysqli_connect("$host", "$dbUser", "$db_pw", "$db_name");
mysqli_query($connection, 'SET NAMES utf8');
if (mysqli_connect_errno()) {
printf("Connection failed: %s \n", mysqli_connect_error());
exit();
}
else {
echo "MySql connection is completed";
}
$userId = $_POST["userId"];
$userPw = $_POST["userPw"];
$statement = mysqli_prepare($connection, "SELECT * FROM user WHERE userId = ? and userPw = ?");
mysqli_stmt_bind_param($statement, "ss", $userId, $userPw);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $userId, $userPw);
$response = array();
$response["success"] = false;
while(mysqli_stmt_fetch($statement)) {
$response["success"] = true;
$response["userId"] = $userId;
$response["userPw"] = $userPw;
}
echo json_encode($response);
?>