프로그래밍

 3198, 1/160 회원가입  로그인  
   U_SoRang
   http://root@root]# rm -rf /
   [PHP] <세션 유지> 에 대한 질문입니다..

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2986 [복사]


제가 지금 php를 공부하고 있는데요..
(어플제작 관련입니다.)

세션에서 막힙니다..

세션을 등록하거나 하면 페이지가 넘어갈 때마다 계속 이어져야 하는데, 그러질 못합니다.

session_register로 등록을 해줘도, 그냥 $_SESSION['INPUT'] 이런식으로 줘도,
스마트폰에선 안되더군요..


브라우져 상의 문제인건가 싶어서 PC에선 파폭을 깔고 해보았고, (PC에선 크롬이 기본)
스마트폰에선 파폭(기본), 오페라, 돌핀 등등 여러 브라우져를 깔고 시험해 보았습니다.

하지만 세션이 유지가 되는 것은 PC의 크롬 뿐이더군요..

인터넷으로 뒤지면 나오는 방법이란 방법은 다 써보았습니다만, 역시나... 더군요...
(php.ini 설정도 해보았습니다. 오토세션도 해보았구요..)

이렇게 보면, 결국 브라우져 문제라고 생각할 수도 있는데... 다른 문제가 있을런지요?

크롬만 되고, 나머지는 안되는 경우는 뭐라고 설명을 해야 하나요?
(안드로이드용 크롬이 찾아보니 없는것 같아서 답답하기만 합니다...)



[1.php]
<html>
<head>
<title>1</title>
</head>

<body>
<form name="FORM_1" method="POST" action="2.php">
<input type="text" class="Input_TEXT1" tabindex="1" name="ID" value="asdfg"/>
<input type="submit" value="OK"/>
</form>
</body>
</html>

[2.php]
<?
$INPUT = $_POST['ID'];
session_register("INPUT");
//$_SESSION['INPUT'] = $_POST['ID'];
//print $_SESSION['INPUT'];
print $INPUT;
?>
<form name="FORM_1" method="POST" action="3.php">
<input type="hidden" name="ID" value="<?=$INPUT?>">
<input type="submit" value="OK"/>
</form>

[3.php]
<?
print $INPUT;
?>
<form name="FORM_1" method="POST" action="1.php">
<input type="submit" value="return 1.php"/>
</form>


정말 간단한 소스입니다.

이게 되야지 로그인 세션도 되는건데, 계속 막혀버리니 정말 울고 싶습니다.

혼자서 끙끙거리다 이렇게 글 남깁니다...

조언 부탁드립니다..

  Hit : 6850     Date : 2011/05/07 01:09



    
pwn3r session_register 함수는 php버젼 올라가면서 사용하지 않구요 ㅎ

처음에 session_start() 함수를 실행해 주어야 그페이지에서 세션파일을 만질수있습니다.
(session_start() 함수 앞에는 @를 붙여주시는게 좋습니다.)

그다음 세션 변수를 사용하실때는 그냥 SESSION 슈퍼글로벌 배열을 사용하시면 됩니다.
$_SESSION['id'] = "pwn3r";
처럼 사용하시면 세션파일에 저장이되서 사용하실수있습니다.
2011/05/07  
asdwho session_start() 함수 없이 글쓰신 분 처럼 크롬은 왜 되는걸까요? 2011/05/08  
U_SoRang 답변해주신 두 분.. 진심으로 감사드립니다..

조언을 참고하여 더욱 연구해 보도록 하겠습니다.
2011/05/08  
prosper 우선 웹상에서 위의 php코드가 정상적으로 되는지 확인해보시고..

ie/ff 등으로 POST데이터가 세션으로 유지되는지 (정확히는 세션쿠키) 클라이언트에서
세션키의 쿠키가 받아지는지...

안드로이드 앱에의 세션 처리방법은 조금 틀립니다.

http 하위 클래스와 android 하위 클래스가 틀립니다.

가급적 http.response, hppt.request, http.cookie 등의 안드로이드 개발자 사이트에 리퍼런스 참고하는게 좋습니다.

=> http 객체는 전역으로 생성해서 connect가 일어난 시점 이후 responce에서 해더 중 쿠키를 cookiestore 에 저장하고 그것을 계속 반복적으로 request 시 헤더에 포함하는 식으로 세션을 유지 하여야 합니다.
=> http객체 생성이후 소멸시키지 않고 앱 종료까지 하나의 객체로 연결유지 시켜야 하는겁니다.

설명을 잘못해서 이해가 됬는지 모르겠네요.
2011/05/09  
U_SoRang >> prosper 님


저한테 글 적어주신 것만으로도 큰 도움이 되었습니다.

덕분에 잘 해결이 된 것 같네요.. 감사합니다.
2011/05/14