[Android Studio] PHP 서버와 통신시 세션ID 활용하는 방법 -Kotlin

2024. 10. 17. 12:35·모바일 앱개발(Kotlin-PHP-Mysql)

 

안녕하세요! 저번 포스팅에서 게시글 CRUD 기능을 작성하다보니 혹시 세션을 어떻게 적용하는지에 대하여 궁금해 하시는 분들이 있을까봐 포스팅 하게되었습니다. 게시글 삭제나 수정을 하려면 인증절차를 거쳐야 하는데 그 과정에서 세션ID가 사용됩니다. 이를 위해 세션ID를 어떻게 전달하고 사용하는지 로그인절차로 예를 들어서 설명해드리겠습니다!

 

[Android Studio] 게시글 CRUD기능 구현

 

[Android Studio] 게시글 CRUD(생성,읽기,수정,삭제)기능 구현 -Kotlin

안녕하세요! 저번 포스팅 '게시글 읽기 페이지 구현' 에 이어서 CRUD 기능을 구현해보겠습니다. 사실 게시글 읽기 기능 자체가 CRUD중 Read에 해당하는 기능인지라 이번 포스팅에선 Create & Update & Dele

jamesbexter.tistory.com


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
'모바일 앱개발(Kotlin-PHP-Mysql)' 카테고리의 다른 글
  • 클래스 - 객체 - 인스턴트 : 확실히 알고 넘어가자! (feat.붕어빵)
  • [Android Studio] 게시글 CRUD(생성,읽기,수정,삭제)기능 구현 -Kotlin
  • [Android Studio] 게시글 읽기 페이지 구현(CRUD->R) - Kotlin
  • [Android Studio] 게시판 기능 구현 + 리사이클 뷰 생성 (Kotlin)
무너박사
무너박사
IT 보안 블로그 입니다. 제가 작성하는 블로그가 누군가의 공부에 조금이라도 도움이 되길 바라며 작성하였습니다.
  • 무너박사
    무너박사의 연구일지
    무너박사
  • 전체
    오늘
    어제
    • 분류 전체보기 (104)
      • WEB 지식 (3)
      • 웹해킹 (13)
      • 웹개발(PHP-Mysql) (12)
      • 웹개발(JSP-Oracle) (2)
      • 워게임 문제풀이 (19)
        • Segfault (17)
        • Dreamhack (2)
      • SQL (3)
      • Python (2)
      • AI (1)
        • LLM(Large Language Model) (1)
      • Kail Linux (3)
      • 잡다한 지식 (2)
      • 모바일 앱개발(Kotlin-PHP-Mysql) (13)
      • 모바일 앱해킹(Android) (31)
        • Frida Lab (2)
        • Android DIVA (8)
        • Insecure Bank (20)
      • 안드로이드 위협 탐지 및 우회 (0)
        • 루팅 탐지 & 우회 (0)
        • 디버깅 탐지 & 우회 (0)
        • 에뮬레이터 탐지 & 우회 (0)
        • Frida 탐지 & 우회 (0)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      normaltic
      sql injection
      dom based xss
      모바일 앱개발
      웹해킹
      mobile diva
      안드로이드 스튜디오
      XSS
      해킹
      Blind sql injection
      워게임
      android diva
      취업반6기
      모의해킹
      앱해킹
      인시큐어뱅크
      모바일앱개발
      Koltin
      MySQL
      모바일 앱해킹
      insecure bank
      php
      칼리리눅스
      Android Studio
      리패키징
      취업반
      Kotlin
      인시큐어 뱅크
      시스템해킹
      취업반 6기
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    무너박사
    [Android Studio] PHP 서버와 통신시 세션ID 활용하는 방법 -Kotlin
    상단으로

    티스토리툴바