2009-08-07 2 views
1

Occassionaly 나는 PHP에서이 오류를 건너 뛰고 어떻게 해결할 수 있습니까?PHP 세션 오류를 피하려면 어떻게해야합니까?

경고 : 알 수 없음 : 스크립트는 PHP 4.2.3 이전까지 존재했던 세션 부작용에 의존 할 수 있습니다. register_globals가 활성화되어 있지 않으면 세션 확장에서 전역 변수를 데이터 소스로 간주하지 않습니다. session.bug_compat_42 또는 session.bug_compat_warn을 각각 off로 설정하여이 기능과이 경고를 비활성화 할 수 있습니다. in Unknown 0 행

+0

코드를 붙여 넣어야합니다. 즉, 행 0 – Dirk

+0

행 0이 아닐 수도 있지만 일부 코드가 도움이됩니다. –

+0

힘든 사람은 내 사이트가 수백 페이지에 걸쳐 컴파일되지만 일반적으로 내 헤더 파일이 첫 번째이며이 오류는 일반적으로 페이지에 리디렉션되는 양식이있는 게시물을 게시 한 후에 일부 페이지에만 표시됩니다. – JasonDavis

답변

6

변수 이름이 세션 매개 변수와 같으면이 버전의 PHP는 프로그래머가 세션 변수에 대해 register_globals를 잘못 사용하는 것으로 잘못 인식합니다. 변수 이름을 바꾸면 경고 메시지가 사라집니다. 난 당신이 경고 또는 오류 메시지를 해제 제안하지 것이다

$mySessionVar = $_session["sessionVar"]; 

하지

$sessionVar = $_session["sessionVar"]; 
+0

흥미 롭습니다. 전에'session.bug_compat_42'를 체크 아웃 한 적이 없습니다. 너와 검보 +1. – zombat

-5

모든 오류 메시지를 비활성화합니다.

+3

이것은 좋은 해결책이 아닙니다. 그것은 단지 코드와 관련된 문제점을 숨기고 미래의 문제로 이어질 것입니다. – zombat

1

오류 메시지에서 제시하는대로 session.bug_compat_42session.bug_compat_warn을 사용하지 않도록 설정하십시오.

+1

오류 메시지가 존재하기 때문에 개발 중에는 사용하지 말아야합니다. 최소한 오류 메시지를 사용하지 않도록 설정하는 이유를 이해했는지 확인하십시오. – Otterfan

+0

좋아요. 입체 음향의 조언을 읽었을 때, 왜이 경우에 해제 할 수 있는지 보았습니다. – Otterfan

2

PHP의 사용되지 않는 기능인 register_globals을 사용하고 있습니다. 이 기능으로 인해 많은 보안 문제가 발생했으며 더 이상 사용하지 않아야합니다. PHP 매뉴얼에서 이에 대해 설명합니다. in-depth.

문제에 대한 자세한 설명은 Google Groups 게시물을 참조하십시오.

편집 : 당신 있습니다하지register_globals에 의존하는 경우에, 당신이 검보와 stereointeractive의 답변에주의를 기울여야한다.

0

, 이것은 당신은 아마 해결하고자하는 문제이다. 가짜 오류 메시지 (sterrointerative.com의 답변 참조)를 트리거하거나 변수를 정의하지 않고 전역 변수를 사용하려고하는 변수 이름이 있습니다 (즉, 볼 수없는 버그가있을 수 있음). 내 생각에 그것은 당신이 소원하고 싶은 중요한 차이입니다.

일부 페이지에서만 발생하는 경우 해당 페이지로 가져온 모든 코드를 검토하고 사용하기 전에 정의되지 않은 변수 사용을 검색해야 할 수 있습니다. 디버거로 페이지를 밟아 가면서 도움을 받아야합니다.

+0

오류 메시지와 같은 메시지를 세션 변수에 저장합니다.이 세션이 null이 아닌 경우 페이지로드시 표시합니다. 세션 변수를 표시 한 직후 설정을 해제합니다.이 오류는 때때로 발생하지만 때마다 발생합니다. 내 메시지 중 하나가 표시된 직후이며이 오류가 발생할 때도 해당 페이지에서 설정을 해제하지 않습니다. – JasonDavis

관련 문제