안녕하세요! 저번 포스팅에서 게시글 CRUD 기능을 작성하다보니 혹시 세션을 어떻게 적용하는지에 대하여 궁금해 하시는 분들이 있을까봐 포스팅 하게되었습니다. 게시글 삭제나 수정을 하려면 인증절차를 거쳐야 하는데 그 과정에서 세션ID가 사용됩니다. 이를 위해 세션ID를 어떻게 전달하고 사용하는지 로그인절차로 예를 들어서 설명해드리겠습니다!
[Android Studio] 게시글 CRUD기능 구현
Step1 . 로그인 시 PHP서버에서 session을 시작한 후 session_id()를 Android Studio로 전달
> 우선 session_start() 로 세션을 시작합니다.
> 이후 session_id() 함수를 사용하여 현재 발급된 세션ID를 저장합니다.
> 저장된 세션ID를 JSON통신을 통해 Android Studio 로 전달합니다.
<?php
include 'dbcon.php';
//login.php
session_start();
session_cache_expire(value: 30);// 세션 유지시간 1시간
$inputJSON = file_get_contents('php://input');
$input = json_decode($inputJSON, TRUE); // Json 형식에서 배열로 디코딩 ,$_POST를 사용할 수 없기 때문에 이것을 사용.
$userid = $input['id'];
$userpass = $input['pass'];
$result = mysqli_query($db, "select * from userlog where userid='" . $userid . "' and userpw='" . $userpass . "'");
$userdata = mysqli_fetch_assoc($result);
if ($userdata) {
$_SESSION['username'] = $userdata['username']; // 세션에 유저정보 저장
$_SESSION['userid'] = $userdata['userid'];
$_SESSION['gender'] = $userdata['gender'];
$session = session_id();
echo json_encode(['status' => 'success', 'data' => $userdata, 'message' => 'wellcome!! ' . $userdata['username'], 'SESSIONID' => $session]);
} else {
echo json_encode(['status' => 'error', 'message' => 'Wrong ID or Password', 'SESSIONID' => NULL]);
}
?>
Step2 . 넘어온 세션ID를 getSharedPrefereces함수를 통해 어플 내부 저장소에 저장한다.
> Kotlin 코드에서 sessionPref에 sessionId란 이름으로 세션 ID가 들어갈 파일을 만들어줍니다.
> edit() 함수를 통해 저장소 내부에 작성할 수 있는 상태를 준비해줍니다.
> editor.putString을 통하여 sessionId파일에다가 가져온 세션ID를 넣어줍니다.
if(requestresult.second=="Wrong ID or Password") { //로그인이 틀렸을때
Toast.makeText(this@LoginActivity, requestresult.second, Toast.LENGTH_SHORT).show()
}else { //로그인이 성공하였을때
val sessionPref=getSharedPreferences("sessionId", MODE_PRIVATE)
val editor = sessionPref.edit()
editor.putString("sessionId",requestresult.third)//requestresult.third 는 세션ID가 담겨있음.
editor.apply() //세션 ID값 저장
Toast.makeText(this@LoginActivity, requestresult.second, Toast.LENGTH_SHORT).show()
finish() //LoginActivity 종료
Step3 . 저장해놓은 세션ID를 getString을 통해 가져온다.
> 세션ID를 사용할땐 sessionPref.getString("sessionId",null) 을 사용하여 가져옵니다.
이후 sessionId 변수를 활용하시면 됩니다!
val sessionPref=getSharedPreferences("sessionId", MODE_PRIVATE)
val sessionId = sessionPref.getString("sessionId",null) //세션 ID값 저장.
긴 글 읽어주셔서 감사합니다!
'모바일 앱개발(Kotlin-PHP-Mysql)' 카테고리의 다른 글
클래스 - 객체 - 인스턴트 : 확실히 알고 넘어가자! (feat.붕어빵) (0) | 2024.10.21 |
---|---|
[Android Studio] 게시글 CRUD(생성,읽기,수정,삭제)기능 구현 -Kotlin (0) | 2024.10.15 |
[Android Studio] 게시글 읽기 페이지 구현(CRUD->R) - Kotlin (1) | 2024.10.13 |
[Android Studio] 게시판 기능 구현 + 리사이클 뷰 생성 (Kotlin) (0) | 2024.10.11 |
[Android Studio] 무선 디버깅 연결이 안될때 수동으로 연결하는법. (0) | 2024.10.07 |