2012-07-09 2 views
0

다른 질문과 유사하게 표시되면 이미 제공된 모든 대답을 완료했지만 문제가 해결되지 않았습니다. 내 문제는 최소한으로 줄였습니다. 헤더 리디렉션 이후에 세션 변수가 손실 됨

  • Page1.php 세션 변수를 생성하고 세션 변수가 설정되어있는 경우 그 다음 페이지 2에
  • 을 Page2.php 브라우저를 보냅니다 나는 두 페이지 (page1.php, page2.php)가

    1. .php 브라우저는 Page1에 설정된 세션 변수의 값을 표시합니다. php
    2. 제 문제는 page2.php가 세션 변수를 설정하지 않은 것으로 봅니다.

    Page1.php

    <?php 
    //start the session 
    session_start(); 
    
    //set the session 
    $_SESSION['mysession'] = "Hello"; 
    
    
    if(isset($_SESSION['mysession'])){ 
        //redirect the person to page 2 
        session_write_close(); 
        header("Location: page2.php?PHPSESSID=".session_id()); 
        exit(); 
    } else { 
    echo "Session Not Set"; 
    } 
    ?> 
    

    Page2.php : 당신이 아래에있는 내 코드에서 볼 수 있듯이

  • 내가 스택 오버 플로우의 다른 사용자가 게시 한 모든 솔루션을 시도


    <?php 
    //start the session 
    session_start(); 
    session_id($_GET['PHPSESSID']); 
    
    if (isset ($_SESSION['mysession'])) 
        echo $_SESSION['mysession']; 
    else 
        echo "Session not set!"; 
    ?> 
    
  • +0

    //php.net/manual/en/function.session-id.php :

    session_id($_GET['PHPSESSID']); session_start(); 

    Parameters 섹션 here..http를 참조

    session_start(); session_id($_GET['PHPSESSID']); 

    에 변경 세션은 id를 보내거나 설정하지 않고 시작하겠습니까? 머리글 ("위치 : page2..jpg 페이지 번호 : –

    +0

    세션 확장자가'PHPSESSID ='매개 변수를 읽도록 설정되어 있습니까? (일반적으로 자신을 미세 조정하지 마십시오.) 리디렉션 된 URL? 쿠키 만 테스트 했습니까? 쿠키가 설정 되었습니까? – mario

    +0

    동일한 도메인의 두 번째 페이지입니까? – Razvan

    답변

    2

    SESSION_ID는() ID가 지정되면

    , 그것은 현재의 세션 ID를 대체 할()으로 session_start 전에 호출 될 필요가있다. session_start()를 호출하기 전에 session_id()를 호출해야합니다. 세션 처리기에 따라 세션 ID에 허용되는 문자는 모두 입니다. 예를 들어, 파일 세션 핸들러 은 a-z A-Z 0-9, (쉼표) 및 -(빼기) 범위의 문자 만 허용합니다!

    :으로 session_start()가 호출 될 때 현재 세션 ID가 설정되는 것과 동일한 경우, 세션 쿠키를 사용 SESSION_ID의 ID를 지정() 에 관계없이 항상, 을 새로운 쿠키를 보내드립니다.

    session_id()-Manual

    당신은 쿠키 기반 인증 설정을해야합니다 여부를 확인 할 수도했습니다.

    사용자가 URL을 게시하면 다른 클라이언트에게 세션을 전달할 수 있습니다.

    +0

    쿠키를 설정하지 않은 경우 (이 사이트의 어딘가에서 본 해결책) session_id 쿼리 문자열이 해결 방법으로 추가되었지만이를 생략하더라도 동일한 결과가 나타납니다. –

    +0

    쿠키가 설정되어 있지 않아도 걱정할 필요가 없습니다. check http://www.php.net/manual/en/session.configuration.php#ini.session.use-cookies – worenga

    +0

    감사합니다. phpinfo() 및 session.use_cookies를 사용하여 확인했습니다. \t이 켜짐으로 설정되었습니다. –

    1

    page2.php에서 처음 두 줄을 바꾸십시오. 당신이 할 때 발생하는

    +0

    감사합니다. 나는 회선을 교환했지만 "세션이 설정되지 않았습니다"같은 결과를 얻습니다. –

    +0

    쿠키 기반 세션 처리기가 수동 설정과 간섭을 일으킬 가능성이 있는지에 대한 의견을 참조하십시오. – worenga

    +0

    @mightyuhu 감사합니다. 어떻게해야합니까? 나도 언급해야합니다 1. 코드는 내 localhost에서 잘 작동합니다 2. 동일한 결과를 가진 호스트 된 서버의 다른 브라우저에서 시도했습니다 –

    관련 문제