2011-08-29 5 views
0

자동 로그인 스크립트를 만들려고합니다. 컴퓨터는 XP에서 IE8을 사용하고 있습니다. 이 코드는 사용자의 Windows 사용자 이름을 성공적으로 검색하여 세션에 저장하지만 리디렉션이 완료되면 세션은 정상적으로 지워집니다. 의 index.php에서

: 테스트 기간 동안, 나는 그것을 삭제 한과에 넣어 때문에

session_start() 
print_r($_SESSION); // Fail. array() 

중요한 문제는 헤더 부분이 될 것 같다 : index2.php에서

session_start(); 
if (!isset($_SERVER["AUTH_USER"]) || $_SERVER["AUTH_USER"] == '') { 
     header('WWW-Authenticate: NTLM', false); 
     exit; 
} 

# Extract username 
$user = explode('\\',$_SERVER["AUTH_USER"]); 
$_SESSION['username'] = strtolower($user[1]); 
print_r($_SESSION); // Success! 
header("Location: index2.php"); 

더미 사용자 이름 및 다음 페이지로 성공적으로 전달합니다. NTLM 인증 (즉, $ _SERVER 배열에 AUTH_USER 세부 정보 넣기)이 필요하기 때문에 머리글이 필요합니다.

EDIT IIS에서 익명 인증을 해제 한 다음 모든 머리글 부분을 제거했습니다. 일했다. 그러나 이로 인해 다른 문제가 발생합니다.

+1

각 스크립트를'session_start()'하시겠습니까? –

+0

예, 둘 다. 그렇지 않으면 print_r ($ _ SESSION)은 항상 비어있게됩니다. – Paul

+0

클라이언트가 쿠키를 허용하고 첫 페이지에 PHP 세션 쿠키가 설정되어 있는지 확인하십시오. 또는 GET을 통해 세션 ID를 전달하십시오. – thwd

답변

0

세션을 시작하기 전에 session_set_cookie_params(0)을 추가하십시오. IE8은 비 지속적 쿠키를 처리하는 데 문제가 있습니다.

+0

IE8에서이 결함을 지적 해 주셔서 감사드립니다. 'session_set_cookie_params (0)'을 시도했지만 작동하지 않았습니다. – Paul

1

내가 한 것처럼이 일에 매달린 사람을 위해 Paul이 게시하고 답변 한 질문을 확인하고 싶습니다.

PHP를 사용하여 IIS에서 실행되는 여러 웹 사이트가 있습니다. 훌륭하게 작동합니다. 그런 다음 NTLM 인증 보안 (예 : Windows 로그인)을 사용하는 사이트를 추가했습니다. 1 페이지에 구축 된 세션은 2 페이지로 이월되지 않았습니다. INI 파일로 재생 된 $_SERVER 설정을 모두 평가판에 버렸습니다. 나는 Paul과 같은 기본 뼈 기초로 응용 프로그램을 무너 뜨 렸으며 인증을 요구할 때만 발생한다는 것을 확인했습니다.

재현하려면 새 브라우저 창을 시작하고 winodws 인증을 사용하여 1 페이지에 로그인하십시오 - 암호 저장을 클릭하지 마십시오. 페이지 2로 이동하려면 링크를 클릭하십시오 - 세션 변수 없음. 브라우저를 닫고 다시 시작하십시오 (인증 재설정). 이번에는 서핑을하기 전에 1 페이지에서 인증 항목을 제거하십시오. 페이지 2로 이동하여 세션이 있습니다.

끄기 "디렉토리 보안/인증 및 액세스 제어"문제 해결 내 웹 사이트의 속성 설정에 "익명 액세스 사용".

폴 감사합니다.

관련 문제