1.
오류 메시지
경고: 세션 쿠키를 보낼 수 없음 - 헤더가 이미 전송됨
경고: 세션 캐시 제한기를 보낼 수 없음 - 헤더가 이미 전송됨
분석 및 해결 방법
이러한 유형의 문제, 이유 프로그램에서 session_start()를 사용할 때 이전에 실제 HTML 콘텐츠가 출력되었다는 것입니다. 어쩌면 당신은 그것을 가지고 있지 않다고 말할 수도 있습니다. 나는 단지 메시지를 에코하거나 인쇄할 뿐입니다. 죄송합니다. echo 또는 print 문에 의해 생성된 출력은 실제 HTML 콘텐츠 출력입니다. 이런 종류의 문제를 해결하는 방법은 session_start()를 프로그램의 첫 번째 줄로 옮기는 것입니다.
2.
오류 메시지
경고: open(F:/689phpsessiondatasess_66a39376b873f4daecf239891edc98b5, O_RDWR) failed
분석 및 해결 방법
이러한 오류 설명은 일반적으로 php.ini 세션의 정보로 인해 발생합니다. .save_path가 제대로 설정되지 않았습니다. 해결 방법은 session.save_path 및 session.cookie_path를
session_save_path = c:temp
session.cookie_path = c:temp
로 설정한 다음 c: 디렉터리에 생성하는 것입니다.
3.
오류 프롬프트
아래의 임시 디렉토리 경고:
분석 및 솔루션
에서 초기화되지 않은 세션을 삭제하려고 시도하는 중 이러한 프롬프트가 발생하면 일반적으로 사용자의 잘못입니다. session_destroy를 직접 호출하여 발생합니다. () 기능. 많은 친구들은 session_destroy() 함수가 독립적으로 실행될 수 있다고 생각하지만 그렇지 않습니다. 해결책은 session_destroy() 함수를 호출하기 전에 session_start()를 사용하여 세션 함수를 활성화하는 것입니다.
4. 질문: 현재 세션의 ID 값을 가져오는 방법은 무엇입니까?
가장 쉬운 방법은
echo SID
알 수 있습니다.
5. 질문: 헤더 함수를 호출하기 전에 내 프로그램에 출력이 없습니다. config.php 파일을 포함했지만 config.php 파일에 출력이 없습니다. 왜 세션에서 다음과 같은 오류가 발생합니까? 질문 1, 헤더 앞에 session_start()를 사용했기 때문인가요?
답변: 어쩌면 실제로 PHP 프로그램을 주의 깊게 확인했는데, 헤더()를 참조하기 전에는 실제로 오류가 없었고, 파일에 출력도 없었을 것입니다. 포함 파일! 그런데 커서 키를 사용하여 PHP 코드의 끝 문 뒤로 검사를 이동합니까?>? 그러면 ?> 뒤에 빈 줄이나 공백이 있는 것을 알 수 있습니다. 이러한 빈 줄이나 공백을 삭제하면 문제가 해결됩니다.
참고: 이 문제는 PHP4.1.2 이상 버전에서 발생하며 아직 테스트되지 않았습니다.
6. 질문: 세션을 사용하여 메인 페이지에 로그인한 후 다른 페이지에서 로그인을 제한하려면 어떻게 해야 합니까? . .
답변: 가장 간단한 방법은
session_start();
if(!session_registered('login') ││ $login != true) {
echo "로그인되지 않았습니다."; 🎜 >exit;
}
7. session_register()를 사용하여 세션 변수를 등록했는데, 헤더 또는 JavaScript 리디렉션 문을 사용할 때 등록된 변수 값에 액세스할 수 없습니다. . 어떻게 해결하나요?
문제의 프로그램 부분:
session_start()
$ok = '사랑해요'
session_register('ok')
: next.php");
?>
next.php
session_start();
echo $ok;
?>
해결책:
헤더 기능이나 window.location 등의 기능을 사용하면 이전 페이지에서 등록한 세션 변수가 쉽게 손실됩니다. 이 문제의 원인에 대한 자세한 답변은 아직 없습니다.
하지만 해결책이 있습니다. 아래와 같이
header("Location: next.php" ."?" . SID)
다음 페이지로 이동할 때 현재 세션 ID를 매개변수로 사용하여 다음 페이지로 전달합니다. .
8. 세션에서 배열을 전달하는 방법
session_register('data');
$data=array(1,2,3,4)
방법은 먼저 등록한 다음 할당하는 것입니다. 값
9. 질문 9: $HTTP_GET_VARS['**']와 같은 메서드를 사용하여 세션 값에 액세스할 수 있나요?
답변: 예, 다음 전역 배열을 사용하여 세션에 액세스하여 웹페이지의 보안을 강화할 수 있습니다.
$HTTP_SESSION_VARS
$_SESSION
루틴:
session_start ();
$username = 'stangly.wrong';
session_register('username')
echo $HTTP_SESSION_VARS['username'];
echo $_SESSION['username'];
?>
필요에 맞게 프로그램을 수정하려면 이 루틴을 참조하세요.
질문 10: session_unregister()와 session_destroy()의 차이점은 무엇입니까?
session_unregister() 함수의 주요 기능은 현재 세션 변수를 등록 취소하는 것입니다. 그러나 $HTTP_SESSION_VARS 또는 $_SESSION을 사용하여 현재 페이지의 세션 변수를 참조하는 경우 unset()과 협력하여 세션 변수를 설정 해제해야 할 수도 있습니다.
그리고 session_destroy()는 현재 세션 환경을 지웁니다. 이는 session_destroy() 함수를 사용한 후에는 더 이상 session_is_registered()를 사용하여 세션 변수를 감지할 수 없음을 의미합니다. 하지만 전역에서 세션을 지우거나 세션 쿠키를 사용할 수 없다는 점에 유의해야 합니다. 따라서 session_destroy를 사용하기 전에 $HTTP_SESSION_VARS $_SESSION을 사용하여 세션에 액세스하지 않는 것이 가장 좋습니다. 루틴:
if(isset($_COOKIE[session_name()])) {
session_start();
session_destroy()
unset($_COOKIE[session_name()]); }
재인쇄되었습니다.
위 내용은 PHP 세션의 내용을 포함하여 PHP 세션 오류를 소개한 내용입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.