>백엔드 개발 >PHP 튜토리얼 >PHP 세션 PHP 세션 FAQ 및 솔루션 요약

PHP 세션 PHP 세션 FAQ 및 솔루션 요약

WBOY
WBOY원래의
2016-07-29 08:36:41778검색

1.
오류 메시지
경고: 세션 쿠키를 보낼 수 없습니다 - 헤더가 이미 전송되었습니다
경고: 세션 캐시 제한기를 보낼 수 없습니다 - 헤더가 이미 전송되었습니다
분석 및 솔루션
이러한 유형의 문제, 이유 프로그램에서 session_start()를 사용할 때 이전에 실제 HTML 콘텐츠가 출력되었다는 것입니다. 어쩌면 당신은 그것을 가지고 있지 않다고 말할 수도 있습니다. 나는 단지 메시지를 에코하거나 인쇄할 뿐입니다. 죄송합니다. echo 또는 print 문에 의해 생성된 출력은 실제 HTML 콘텐츠 출력입니다. 이런 종류의 문제를 해결하는 방법은 session_start()를 프로그램의 첫 번째 줄로 옮기는 것입니다.
2.
오류 메시지
경고: open(F:/689phpsessiondatasess_66a39376b873f4daecf239891edc98b5, O_RDWR) failed
분석 및 해결 방법
이러한 오류 문이 나타나는 것이 일반적입니다. session.save_path에 대한 php.ini가 제대로 설정되지 않았습니다. 해결 방법은 session.save_path 및 session.cookie_path를
session_save_path = c:temp
session.cookie_path = c:temp
으로 설정하는 것입니다. : 디렉토리
아래에 임시 디렉토리를 생성합니다. 3.
오류 메시지
경고:
분석 및 솔루션
에서 초기화되지 않은 세션을 삭제하려고 합니다. 이러한 프롬프트가 표시되면 일반적으로 사용자의 잘못입니다. session_destroy() 함수를 직접 호출하여. 많은 친구들은 session_destroy() 함수가 독립적으로 실행될 수 있다고 생각하지만 그렇지 않습니다. 해결책은 session_destroy() 함수를 호출하기 전에 session_start()를 사용하여 세션 함수를 활성화하는 것입니다.
4. 질문: 현재 세션의 id 값을 어떻게 얻나요?
가장 쉬운 방법은
echo
알게 될 것입니다.
5. 질문: 헤더 함수를 호출하기 전에 내 프로그램에 출력이 없습니다. config.php 파일을 포함했지만 config.php 파일에 출력이 없습니다. 세션에서 여전히 다음과 같은 오류를 보고하는 이유는 무엇입니까? 질문 1, 헤더 앞에 session_start()를 사용했기 때문인가요?
답변: 아마도 PHP 프로그램을 주의 깊게 확인했는데, 헤더()를 참조하기 전에는 실제로 오류가 없었고, 거기에 출력이 없습니다. 포함 파일! 그런데 커서 키를 사용하여 PHP 코드의 끝 문 뒤로 검사를 이동합니까?>? 그러면 ?> 뒤에 빈 줄이나 공백이 있는 것을 알 수 있습니다. 이러한 빈 줄이나 공백을 삭제하면 문제가 해결됩니다.
참고: 이 문제는 PHP4.1.2 이상 버전에서 발생하며 아직 테스트되지 않았습니다.
6. 질문: 세션을 사용하여 메인 페이지에 로그인한 후 다른 페이지에서 로그인을 제한하려면 어떻게 세션을 사용할 수 있나요? . .
답변: 가장 간단한 방법은
session_start();
if(!session_registered('login') ││ $login != true) {
echo "로그인되지 않았습니다."; 🎜 > 종료;
}
7. 질문: session_register()를 사용하여 세션 변수를 등록했는데, 헤더 또는 자바스크립트 리디렉션 문을 사용할 때 등록된 변수 값에서 세션에 액세스할 수 없습니다. 어떻게 해결하나요?
문제의 프로그램 부분:
session_start()
$ok = 'love you'
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)
방법은 먼저 등록한 후 할당하는 것입니다. value
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'];
?>
phper에 대한 모든 정보는 http://www.phpfans.net에서 제공됩니다.
이 루틴을 참조하여 수정하세요. 자신의 프로그램에 맞게.
질문 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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.