마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

php로 로그인 구현후,,,, 로그인php의 세션이 유지되지가 않습니다.. ㅠ

0 추천
A라는 엑티비티에서 php를 통해 로그인을 수행합니다.

volley 라이브러리를 통해 php에 아이디, 비밀번호를 전송하면

로그인 php에서 session_start() 를 사용하고 $_SESSION['A'] = "랜덤문자열" 을 통해 세션을 생성합니다.

 

 

그리고 엑티비티B에서 또다시 volley 라이브러리를 사용하여 (새로선언함) 글쓰기 php 에 데이터를 전송하여 처리를 하는방식입니다.

그런데 글쓰기php를 통해 로그인php에서 생성한 세션값($_SESSION['A']) 을 불러와보면 텅 비어있습니다.. ㅠㅠ 원래 로그인php 에서 생성한 랜덤문자열이 있어야 하는데 말이죠.. ㅠ

 

 

혹시몰라서 로그인php에서 세션생성하고나서 echo로 세션값 받아보았는데 정상적으로 살아있습니다.

엑티비티 b에서 volley를 새로선언하고 글쓰기php와 통신해서보면 계속 세션이 텅~비어있는데.. 뭐가문제일까요?

 

php 코드 상단에 당연히 session_start() 사용했습니다. ㅜㅜ
익명사용자 님이 2017년 11월 15일 질문

1개의 답변

0 추천
 
채택된 답변
웹브라우저에서 서버에 접속한 후, 서버에서 session이 생성됩니다.
그런데, 웹브라우저는 대부분 connectless이기 때문에, 그냥 접속하면 같은 놈이 접속하는지 모릅니다.
그래서 cookie를 이용해서 재접속시 기존에 연결되었던 놈인지 확인합니다.

volley를 이용하던 httpclient나 reactive를 이용하던 세션에 대한 쿠키값을 기억하고 다시 request할 때 보내야 합니다.

https://stackoverflow.com/questions/16680701/using-cookies-with-android-volley-library/21271347#21271347
Will Kim (43,170 포인트) 님이 2017년 11월 16일 답변
아 그렇군요... 일단 volley로 request할때 쿠키값을 추가하는방법을 알아봐야겠군요
정말 감사하고 죄송하지만 혹시.. 세션에대한 쿠키값이라는게 어디서 찾을수있을까요?
로그인php의 response에 쿠기값이 있을까요? 그렇다면 해당 쿠키값을 계속 기억하고 request를 하면 될까요?

제가 아직 학생이라 부족한점이 많습니다.. 죄송합니다.

정말 소중한 답변 감사합니다... !!
제가 추가한 링크에 있습니다.
그걸 가지고 오면, 여기서는 예제가 httpclient로 예를 들었습니다. 다른 객체들도 유사한 구조일 겁니다.
cookieStore 를 가져와서 setCookieStore()를 하는부분입니다.
클라이언트가 서버와 접속해서 로그인을 했다면, Return되는 http header에 cookie를 세팅해서 돌려 줍니다. 그럼 그것을 기억했다가 연결할 때마다 Request Header에 다시 전달하면 세션이 유지됩니다.

DefaultHttpClient httpclient = new DefaultHttpClient();

CookieStore cookieStore = new BasicCookieStore();
httpclient.setCookieStore( cookieStore );

HttpStack httpStack = new HttpClientStack( httpclient );
RequestQueue requestQueue = Volley.newRequestQueue( context, httpStack  );
...