>  기사  >  백엔드 개발  >  세션_시작();

세션_시작();

巴扎黑
巴扎黑원래의
2016-11-30 09:23:231567검색

PHP의 세션 기능에 대해서는 적절한 답을 찾지 못했습니다. 특히 일부 오류와 오류 없는 결과가 가장 두려웠던 것은 후자인데, 이는 많은 초보자들에게 항상 당혹감을 안겨주었습니다. 일부 베테랑조차도 때때로 혼란스러워합니다. 이 기사에서는 모든 사람이 참고할 수 있도록 이러한 문제를 간단하게 요약합니다.

1.
오류 메시지
경고: 세션 쿠키를 보낼 수 없음 - 헤더가 이미 전송됨
경고: 세션 캐시 제한기를 보낼 수 없음 - 헤더가 이미 전송됨
분석 및 해결 방법
이러한 유형의 문제가 발생하는 이유는 프로그램에서 PHP session_start()를 사용할 때 이전에 실제 HTML 콘텐츠가 출력되었기 때문입니다. 어쩌면 당신은 내가 그것을 가지고 있지 않다고 말할 수도 있습니다. 나는 단지 메시지를 에코하거나 인쇄할 뿐입니다. 죄송합니다. echo 또는 print 문에 의해 생성된 출력은 실제 HTML 콘텐츠 출력입니다. 이런 종류의 문제를 해결하는 방법은 session_start()를 프로그램의 첫 번째 줄로 옮기는 것입니다. session_save_path = c: emp

session.cookie_path = c: emp
으로 설정한 다음 임시 생성에서 설정하는 것입니다. c: 디렉토리 아래에 있는

3.
오류 프롬프트
경고:
분석 및 해결 방법
에서 초기화되지 않은 세션을 삭제하려고 하면 다음과 같은 프롬프트가 표시됩니다. session_destroy() 함수를 직접 호출하면 됩니다. 많은 친구들은 session_destroy() 함수가 독립적으로 실행될 수 있다고 생각하지만 그렇지 않습니다. 해결책은 session_destroy() 함수를 호출하기 전에 PHP session_start()를 사용하여 세션 함수를 활성화하는 것입니다.

4. 질문: 현재 세션의 ID 값을 가져오는 방법은 무엇입니까?
가장 쉬운 방법은
echo SID
알 수 있습니다.

5. 질문: 헤더 함수를 호출하기 전에 내 프로그램에 출력이 없습니다. config.php 파일을 포함했는데도 세션이 여전히 존재하는 이유는 무엇입니까? 질문 1과 동일한 오류가 보고됩니다. 헤더 앞에 PHP 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='loveyou'apos;;session_register('ok');header("location:next.php");?>next .phpsession_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( ; ['사용자 이름'];


echo'

'apos;;

echo$_SESSION

['사용자 이름'];


? >

이 루틴을 참조하여 자신의 필요에 맞게 프로그램을 수정하세요.

질문 10: session_unregister()와 session_destroy()의 차이점은 무엇입니까?

session_unregister() 함수의 주요 기능은 현재 sion을 등록 취소하는 것입니다. (php.net에서 번역됨)

루틴:

if(isset($_COOKIE[session_name()])){session_start();session_destroy();unset($_COOKIE[session_name()]);}


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