2010-12-03 9 views
1

PHP로 응용 프로그램을 작성했습니다. 여기에 포함됩니다
1 : 로그인 양식
2 : 환영 페이지
3 : 로그인 양식으로 리디렉션되는 로그 아웃 양식.

내 register_global = php.ini에서 켜기.PHP 태그 앞에 공백이 있습니다

내 응용 프로그램이 LAMP 및 WAMP에서 제대로 작동하고 있습니다. 하지만 라이브 서버에서는 세션을 설정하지 않습니다.

하지만 세션 설정 파일에서 줄 단위로 확인한 후 '<?PHP ...... ?>'을 시작하기 전에 하나의 공백이있었습니다. 그 공간을 제거한 후에는 응용 프로그램이 라이브 서버에서 제대로 작동하고 있습니다.

‘<?PHP ...... ?>' 세션이 설정되기 전에 그 공간의 배후가되는 이유는 무엇일까요?

+0

이 문제의 해결 방법은 출력 버퍼링을 사용하는 것입니다 (방문 지점 이외의 파일에서). 참조 : http://www.php.net/manual/en/function.ob-start.php –

답변

5

을해야합니다. 세션을 열기 위해서는, 소위 HTTP 헤더를 보내야합니다. 어떤 것이 출력되기 전에해야합니다. 그것이 작동하지 않는 이유입니다. 오류 메시지는 아마도 "헤더가 이미 전송되었습니다."

1

응답 헤더를 보내기 전에 내용을 보낼 수 없습니다. 세션은 응답 헤더에서 전송됩니다. 따라서 미리 공간을 보냈으므로 세션을 시작할 수 없습니다.

session_start의 설명서에서 "쿠키 기반 세션을 사용하려면 브라우저에 아무것도 출력하기 전에 session_start()를 호출해야합니다.". 여기에는 시작시 단일 공간이 포함됩니다.

기본적으로, 모든 스크립트의 첫 번째 것은 항상 공간이 브라우저로 전송 출력, 즉이다 <?php

관련 문제