2012-08-23 3 views
0

브라우저 버전의 웹 앱이 있으며 일부 값이 쿠키에 저장되어 있습니다. 이제 모바일 버전을 만들고 있는데 내 쿠키가 작동하지 않는 것 같습니다. 모바일 장치에서 쿠키를 사용할 수 있습니까?모바일 브라우저는 세션 변수를 지원하지 않습니까?

는이 코드를 수행하기 위해 노력하고 내 PHP는 나에게 빈 값주고있다 :

$(document).ready(function() { 
    var session_lang= '<?php if(isset($_SESSION['SESS_LANGUAGE'])) 
          echo $_SESSION['SESS_LANGUAGE'];?>'; 
      if (session_lang!='') 
      { 
       check_and_change(session_lang); 
      } 
    }); 

이 쿠키로 작업 할 수 있도록 내부 메모리에 데이터를 저장하는 다른 방법이 있나요를? 휴대 기기는 세션 변수를 지원합니까? 방화 광구를보고 있는데 세션 변수를 만들 수 있다는 것을 알 수 있지만 그것을 읽고 싶을 때는 null입니다. 무엇이 문제 일 수 있으며이를 해결하는 방법은 무엇입니까?

편집 : 나는 당신에게 내가하는 일을 볼 수 있도록 거의 모든 코드를 넣을 것이다 ... btw. 이 코드는 PC 브라우저에서 정상적으로 작동합니다.

자바 스크립트 파일 :

을 그리고 마지막은 pass_value.php입니다 :

$(document).ready(function() { 

    function languageChange() 
    { 
     var lang = $('#websites1 option:selected').val(); 

     return lang; 
    } 


    $('#websites1').change(function(e) {      

     var lang = languageChange(); 

     var dataString = 'lang=' + lang; 

     $.ajax({ 

      type: "POST", 
      url: "pass_value.php", 
      data: dataString, 
      dataType: 'json', 
      cache: false, 
      success: function(response) { 

        check_and_change(response.message); 
       } 
     }); 

     return false; 

    }); 

}); 

    function check_and_change(lang) 
    { 
      switch (lang) 
         { //do something 
          } 
    } 

그럼 제가 위에서 넣어 가지고이 첫 번째 부분은 내가 찾고 있어요 개방되는 실제의 PHP 사이트에 :

<?php 
session_start(); 

$_SESSION['SESS_LANGUAGE'] = $_POST['lang']; 

print json_encode(array('message' => $_SESSION['SESS_LANGUAGE'])); 
die(); 
?> 

나는이 코드가 휴대 전화에서 작동하지 않는 이유를 정말로 모른다.

+0

세션 ID는 쿠키를 통해 또는 GET 방법을 통해, 그리고 내가 아는 바를 통해 전달 될 수 있습니다. 모바일 장치의 브라우저는 쿠키를 지원합니다. 코드가 실제로 작동하는지 확신합니까? 세션을 시작한 적이 있습니까? –

+0

[HTML 5 Web Storage 살펴보기] (http://www.sitepoint.com/a-better-cookie-html5-and-web-storage/#fbid=PofM_1DrEuA) –

+0

그래서 세션 변수로 저장하는 대신 I 웹 저장소에 저장 하시겠습니까? –

답변

6

모바일 브라우저의 쿠키 definitelywork 당신은 "나는 방화범이 끌리는 사람을보고있다"고 말하면서, 당신이 정말로 전화로 그것을보고 있지 않다고 생각하게 만듭니다.

started the sessionturned on error reporting이 있습니까?

+0

안녕하세요, 저는 브라우저와 iOS 및 Android 기기를 살펴 봅니다. 좋아, 네가 쓴 것을 확인하게 해줘. –

+0

세션이 시작되었으며 오류가 표시되지 않습니다. –

+0

그런 다음'$ _SESSION [ 'SESS_LANGUAGE']'가 설정되지 않았거나 어딘가에 덮어 쓰기/삭제됩니다. 이것을 디버깅하려면 코드를 통해'var_dump ($ _ SESSION); die;'를 실행하거나 [xdebug] (http://xdebug.org/)와 같이 추적하십시오. – Znarkus

0

유사한 상황이 발생하여 .ajax() 호출의 URL 매개 변수에 지정된 스크립트를 내 태블릿에서 호출하기 전에 실제로 index.php 스크립트를 다시 호출하고있었습니다.

내 휴대 전화와 동일합니다. index.php에 세션 변수를 초기화 했으므로 초기 값으로 다시 설정되어 페이지간에 올바르게 저장되지 않은 것처럼 보입니다.

index.php이 다시 호출되는 이유를 알지 못했지만 if !isset() 초기화 문을 검사하여 해결했습니다.

-1

Android에서 '데이터 세이버'를 켜면 세션이 효과적으로 삭제되었습니다. 로그인이 성공하면 이전 페이지로 리디렉션되는 로그인 스크립트가 있습니다. 데이터 세이버를 사용할 때까지 작업했습니다. 끄면 다시 작동합니다. Google은 데이터 세이버가 HTTPS 웹 사이트에없는 내 스크립트를 포함하는 보안 페이지에 영향을 미칠 수 있다고 말합니다.

관련 문제