0

여러 페이지에서 세션 변수를 사용하려고합니다. 그러나 설정 한 원본 페이지에서 내 서버의 다른 페이지로 이동하면 변수가 사라집니다. 변수가 첫 페이지에 원래 설정되었지만 후속 페이지에서 액세스하려고 할 때 아무런 가치가 없다는 것을 확인했습니다. session_id()에 액세스하면 첫 번째 페이지에서 설정 한 것과 다릅니다. (세션 변수가 설정 첫 페이지)IE가 PHP 세션 변수를 전달하지 않음

<?php 
ini_set("display_errors", "1"); 
error_reporting(E_ALL); 
session_start(); 
$_SESSION['id'] = session_id(); 
header('Location: pagetwo.php'); 
die(); 
?> 

(내가 세션 변수에 액세스하려고 두 번째 페이지)

<?php 
ini_set("display_errors", "1"); 
error_reporting(E_ALL); 
session_start(); 
echo "SESSION[id] = ".$_SESSION['id']."<br>"; 
?> 
을 : 여기

는 내가 뭘하려고 오전의 단순화 된 버전입니다

$_SESSION['id'] 반환 빈 나는 출력 오류 주장이 있습니다

을 주의 사항 : 정의되지 않은 인덱스 : C에서 ID : 상황이 조금 이상한받을 경우 지금 여기

라인 5 \ 프로그램 파일 \ 아파치 소프트웨어 재단 \ Apache2.2 \ htdocs를 \ pagetwo.php이다. 이것은 모든 브라우저에서 발생하는 것은 아닙니다 (IE8 및 Firefox 3 만 해당). Chrome 15 및 Firefox 7의 세션 변수에 액세스 할 수 있습니다. 또한 아파치와 PHP를 실행하는 두 개의 다른 서버가 있습니다. 이 문제를 겪고있는 서버는 PHP 5.2.17을 실행하지만 PHP 5.2.9를 실행하는 다른 서버에서는 모든 브라우저 유형의 모든 페이지에서 세션 변수에 액세스 할 수 있습니다.

두 서버간에 PHP.ini 파일이 다른 것 같지만 세션 설정이 동일합니다.

다른 사람이 IE8이 PHP 5.2.17에서 세션 변수에 액세스 할 수없는 비슷한 문제가 발생했는지 모르겠지만 지난 2 일 동안 양식을 검색했지만 이와 비슷한 것을 찾을 수 없었습니다. 나는 아주 간단한 것을 놓치고 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바라고 있습니다.

+1

당신이 세션 쿠키가 IE에 저장하지 않는 것을 볼 아마 것, dev에 도구를 사용하여 ... 세션 데이터는 브라우저 별 아니다 세션의 전제는 쿠키를 기반으로합니다. 또한 예외를 피하려면 isset()을 사용해야합니다. – Fosco

답변

3

사용자를 pagetwo.php (으)로 리디렉션하기 전에 세션 변수를 닫지 않았기 때문에 의심됩니다. 코드에서 ID 값을 설정 한 후 session_write_close()에 추가하는 것이 좋습니다. 변경 사항이 세션 변수에 추가되고 이후 페이지에서 검색 할 수 있습니다.

<?php 
session_start(); 
$_SESSION['id'] = session_id(); 
session_write_close(); 
header('Location: pagetwo.php'); 
?> 

당신은 PHP.net에 대한 자세한에 대한 session_write_close()를 읽을 수 있으며 댓글을 기여 사용자에게 아래로 스크롤하면, 당신은 바로이 문제에 대해 JP라는 사람이 댓글을 볼 수 있습니다.

건배!

4

페이 스북 응용 프로그램을 개발하는 동안 동일한 문제가 발생했습니다. IE는 세션 쿠키를 보내지 않았으므로 모든 페이지 요청이 새 것으로 시작되었습니다. 다음 헤더 나를 위해 그것을 해결 : 그것은 그러나, 서버 측 그대로

header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"'); 
관련 문제