안녕하세요.
제가 원래 집컴에 서버를 올려서 쓰고 있다가 aws ec2를 쓰면서 서버에 있던 데이터 다 rds에 옮기고 어플리케이션에서 데이터 받고 수정도 다 되는지 확인 했습니다. 근데 문제가 로그인할 때 인데요. 계정 생성시에는 전혀 문제 없이 잘되는데 로그인 할때만 500에러가 뜹니다..애초에 뭘 하든 BasicNetwork.performRequest: Unexpected response code 500 for url 에러가 뜨면 그냥 내부 오류구나 하겠는데. 로그인 할 떄만 뜨니 제가 뭐 잘못한게 아닌가 싶어서 질문올립니다..
private void checkLogin(final String user_id, final String password) {
// Tag used to cancel the request
StringRequest strReq = new StringRequest(Method.POST,
AppConfig.URL_LOGIN, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, "Login Response: " + response.toString());
try {
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
// Check for error node in json
if (!error) {
// user successfully logged in
// Create login session
session.setLogin(true);
// Now store the user in SQLite
String uid = jObj.getString("uid");
JSONObject user = jObj.getJSONObject("user");
String name = user.getString("name");
String user_id = user.getString("user_id");
String created_at = user.getString("created_at");
// Inserting row in users table
db.addUser(name, user_id, uid, created_at);
// Launch main activity
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
finish();
} else {
// Error in login. Get the error message
String errorMsg = jObj.getString("error_msg");
Toast.makeText(getApplicationContext(),
errorMsg, Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
// JSON error
e.printStackTrace();
Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
생략
}
}) {
@Override
protected Map<String, String> getParams() {
Log.e("num","6");
// Posting parameters to login url
Map<String, String> params = new HashMap<String, String>();
params.put("user_id", user_id);
params.put("password", password);
return params;
}
};
// Adding request to request queue
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
login.php
<?php
생략
if (isset($_POST['user_id']) && isset($_POST['password'])) {
// receiving the post params
$user_id = $_POST['user_id'];
$password = $_POST['password'];
// get the user by email and password
$user = $db->getUserByIdAndPassword($user_id, $password);
if ($user != false) {
// use is found
$response["error"] = FALSE;
$response["uid"] = $user["unique_id"];
$response["user"]["name"] = $user["name"];
$response["user"]["user_id"] = $user["user_id"];
$response["user"]["created_at"] = $user["created_at"];
$response["user"]["updated_at"] = $user["updated_at"];
echo json_encode($response);
} else {
// user is not found with the credentials
$response["error"] = TRUE;
$response["error_msg"] = "Login credentials are wrong. Please try again!";
echo json_encode($response);
}
}
?>
DB_Functions.php의 일부분
public function getUserByIdAndPassword($user_id, $password) {
$stmt = $this->conn->prepare("SELECT * FROM users WHERE user_id = ?");
$stmt->bind_param("s", $user_id);
if ($stmt->execute()) {
$user = $stmt->get_result()->fetch_assoc();
$stmt->close();
// verifying user password
$salt = $user['salt'];
$encrypted_password = $user['encrypted_password'];
$hash = $this->checkhashSSHA($salt, $password);
// check for password equality
if ($encrypted_password == $hash) {
// user authentication details are correct
return $user;
}
} else {
return NULL;
}
}