>  기사  >  백엔드 개발  >  SESSION의 함정

SESSION의 함정

WBOY
WBOY원래의
2016-08-08 09:26:101187검색



 

오류 메시지:

경고: 세션 쿠키를 보낼 수 없습니다. 헤더가 이미 전송되었습니다.

경고: 세션 캐시 제한기를 보낼 수 없습니다. 헤더가 이미 전송되었습니다.

분석 및 솔루션:

그 이유는 프로그램에서 session_start()를 사용하면 이미 실제 html 콘텐츠 출력이 있습니다. 어쩌면 당신은 내가 메시지를 반향하거나 인쇄한다고 말할 수도 있습니다. 죄송합니다. echo 또는 print 문에 의해 생성된 출력은 실제 html컨텐츠 출력. 이런 종류의 문제에 대한 해결책은 session_start()를 프로그램의 첫 번째 줄 으로 이동하는 것입니다.

오류 메시지

경고: open(F:/689phpsessiondatasess_66a39376b873f4daecf239891edc98b5, O_RDWR) 실패

분석 및 해결 방법 :

이러한 오류는 일반적으로 php 항목에 의해 발생합니다. session.save_path ini가 제대로 설정되지 않았습니다. 해결 방법은 session.save_path를 변경하는 것입니다. 🎜>session.cookie_path

session_save_path = c:temp

session.cookie_path = c:temp

그런 다음

c:

Create temp 디렉터리,

3.

분석 및 솔루션

:

이와 같은 프롬프트는 일반적으로 session_destroy() 함수를 직접 조정하면 발생합니다. 많은 친구들이

session_destroy() 함수가 독립적으로 실행될 수 있다고 생각하지만 그렇지 않습니다. 해결책은 session_destroy() 함수를 호출하기 전에 session_start()

를 사용하여 세션을 여는 것입니다. . 기능 . 4.질문:방법 ? 현재 세션

id 값을 얻는 방법은 무엇입니까?

가장 간단한 방법은 입니다. echo

session_id('0-2 - c-d-e');

session_start();

$_SESSION['is_admin'

] =

'예' ;

 에코 SID;?>

5.질문

:내 프로그램에는 header

함수를 호출하기 전에 출력이 없습니다. 하지만 include

A config.php 파일인데 config.php 파일에 출력이 없습니다. 왜 session인가요? 은 여전히 ​​1과 같은 오류를 보고합니다. 헤더를 사용하는 이유는 무엇입니까? 🎜>session_start() 이전

답변:아마도 헤더()php 프로그램을 주의 깊게 확인했을 것입니다. 🎜>에는 이전에 출력이 없었고 include 파일에도 출력이 없습니다! 그런데 커서 키를 사용하여 ?>PHP 코드 끝 뒤로 수표를 이동합니까? 성명? 그러면 ?> 뒤에 빈 줄이나 공백이 몇 개 있는 것을 확인하실 수 있습니다. 이 빈 줄이나 공백을 삭제하시면 문제가 해결됩니다.

참고: 이 문제는 PHP4.1.2 이상 버전에서 발생하며 테스트되지 않았습니다.

6.문의:세션을 기본 로그인 페이지로 사용한 후 세션을 사용하여 로그인을 제한하는 방법 다른 페이지에 ?

답변: 가장 쉬운 방법은

입니다.

session_start();

if(!session_registered('login') ││ $login != true) {

echo "로그인되지 않았습니다"

exit; 🎜>7.물음:

session_register()를 사용하여

session

변수이지만

header

를 사용하거나 javascript 리디렉션 문을 사용하면 다음 페이지에서는 session에서 등록한 변수 값에 접근할 수 없습니다. 어떻게 해결하나요? [테스트 실패] 문제의 프로그램 부분:

session_start();

$ok = '사랑해요';

session_register ('확인');

header("위치 : next.php")

?>

?> 🎜>

header 기능이나

window.location을 사용하는 경우 함수, 이전 페이지에서 등록한

세션 변수는 쉽게 유실될 수 있습니다. 이 문제의 원인에 대해서는 아직까지 자세한 답변이 없습니다.

하지만 해결책이 있습니다. 아래와 같이

header("Location: next.php" ."?" . SID)

다음 페이지로 이동할 때 세션

의 현재 id를 매개변수로 사용하여 페이지에 전달합니다.

8.session배열 전달 방법 session_register('데이터')

$data=array(1,2,3, 4 ;

9.질문9:

$HTTP_GET_VARS['**']과 같은 것을 사용할 수 있나요?

세션 값에 액세스하는 방법은 무엇입니까? 답변: 예, 다음 글로벌 배열을 사용하여

세션에 액세스할 수 있습니다. 웹페이지 보안 강화

$HTTP_SESSION_VARS

$_SESSION

루틴:

< ?php

session_start(); $username = '잘못됨' ;session_register('사용자 이름') '사용자 이름']

echo '
';

echo $_SESSION['사용자 이름'] ?>

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

질문10: session_unregister() session_destroy() 차이점은 무엇인가요?

session_unregister()주요 기능은 현재 session 변수를 등록 취소하는 것입니다. 그러나 현재 페이지 세션에서 을 참조하기 위해 $HTTP_SESSION_VARS 또는 $_SESSION을 사용하는 경우 주의하세요. 변수인 경우 unset()과 협력하여 session 변수를 설정 해제해야 할 수도 있습니다.

session_destroy()는 현재 세션을 지웁니다. 환경. 즉, session_destroy() 함수를 사용한 후에는 session_is_registered()를 사용하여세션 변수입니다. 하지만 글로벌에서 세션을 삭제하거나 세션 쿠키를 사용할 수 없다는 점에 유의해야 합니다. 🎜>session. 따라서 session_destroy를 사용하기 전에 $HTTP_SESSION_VARS $_SESSION을 사용하지 않는 것이 가장 좋습니다. 🎜> 세션에 액세스합니다. ( php.net에서 번역됨) 루틴:

if(isset($_COOKIE[session_name()])) {

session_start();

session_destroy()

설정 해제() $_COOKIE[세션_이름()])

}

APHP

취약점:

session_start()

$_SESSION[

'is_admin'] = '예'; $is_admin = '아니요'

; 에코

$_SESSION['is_admin'];?>

취약점 설명:

php.ini

,

register_globals = On일 때 정의된 변수는 session 이름을 변경합니다. . 세션을 이용하여 로그인할 경우 일반 로그인 문제가 발생할 수 있습니다.

위 내용은 SESSION의 단점을 포함하여 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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