2012-12-16 2 views
0

저는 몇 년 전에 작성된 코드를 통해 이전 웹 사이트의 클라이언트를 돕고 있습니다 (관련성이 있는지는 확실치 않지만,) 그리고 사이트에서 언급 된 다양한 제안 (즉, isset)을 사용함에도 불구하고 정의되지 않은 색인 오류가 계속 발생합니다. 주로 사이트가 정상적으로 작동했던 구형 서버에서 파일을 옮기고 있는데 왜이 오류가 발생하는지 잘 모르겠습니다. I는 설정되지 않은 '세션 ID'변수 함께 할 수있는 뭔가가 가정 싶지만,이 설정은 어디에서 기존 코드 어디에서나 찾을 수 없습니다 -PHP undefined Index 오류 - isset이 완화되지 않는 것 같습니다.

<?php 
session_start(); 
error_reporting(E_ALL); 
if ($_SESSION['sessionID'] != session_id() || !$_SESSION['userID']) { 
// login page 
} else { 
// admin page 
} 
?> 
+1

설정되어 있는지 확실하지 않은 경우. 정확한 값을 알 수 있도록'var_dump '하십시오. 그것은 무엇을 반환합니까? – Jelmer

+0

'isset()'을 어떻게 사용하려 했습니까? 'session_id()'를 저장할 때 _why_를 언급하지 않는다는 것에주의하십시오. (예를 들어, 세션 ID는 세션 ID() $ _SESSION') –

+0

var_dump는 array (0) {} –

답변

-2

정의되지 않은 인덱스는 공지하지 오류입니다. error_reporting (E_ALL^​​E_DEPRECATED^E_NOTICE)을 설정하고 모든 것이 수정되는지 확인하십시오.

+1

고지 사항도 처리해야합니다. 그렇지 않으면, 당신은 단지 깔개 아래에 가난한 코딩 관행을 청소하고있어. 조만간 중요한 E_NOTICE가 누락 될 것입니다. –

+0

더 이상 동의 할 수는 없겠지만 가능성있는 "올바른"솔루션은 리팩토링이며 이로 인해 비용과 일정에 영향을 미칩니다. 오래된 코드는 많은 초기 PHP 가정에 의존하기 때문에 큰 비용과 일정에 영향을 미칩니다. –

0

PHP 오류는 문제를 디버그하는 데 필요한 모든 정보로 구성됩니다. 제공 :

  1. 오류 수준 (E_WARNING, E_NOTICE, E_ERROR 등).
  2. 보통 문제를 설명하는 짧은 메시지입니다 (정의되지 않은 색인이 사용되는 변수의 이름과 함께 정의되지 않은 색인).
  3. 오류가 발생한 PHP 스크립트의 이름입니다 (시스템에 스크립트의 전체 경로가 포함되어 있으므로 쉽게 찾을 수 있습니다).
  4. 오류 처리기가 호출 된 줄 번호입니다.이 줄 번호는 해당 파일에서 오류가 발생한 위치입니다. 여기

은 ... 당신이받은 것과 같은 PHP 오류의 예

공지 사항 : 정의되지 않은 인덱스 : sessionID와 /tmp/test.php 라인에 2

당신 바로이 오류가 발생한 상황을 파악하는 데 필요한 모든 것을 갖추고 있어야합니다. 나는이 오류 메시지가보고 당신을 말할 수있는 것, 예를 들면, /tmp/test.php 내가 배열에 sessionID와 인덱스 을 정의하지 않은 파일의 라인이의로 $ _SESSION 그 .

이것은 항상 변수가 isset()으로 먼저 정의되었는지 확인함으로써 쉽게 해결됩니다.

if (isset($_SESSION['sessionID']) && $_SESSION['sessionID'] != session_id()) { 
    // login page 
} else { 
    // admin page 
} 
+0

변수가 그 파일에 정의되지 않았다는 것이 꽤 분명합니다. 내가 이해할 수없는 것은 모든 파일이 동일하기 때문에 이전 라이브 사이트에서 작동 한 것이지 지금은 그렇지 않은 것입니다.기존 구성에서 isset을 시도했지만 작동하지 않았고 게시 한 코드를 시도했지만 로그인하지 않고도 관리자 페이지로 직접 전달되었습니다. 기본적으로 보안 로그인 페이지를 만들려고 노력하고 있지만 나와 같은 코드를 사용하려고했는데 (클라이언트의 요청) - 왜 원래 코더가 자신이 내린 결정을 내렸는지 확신 할 수 없습니다. –

+0

_ 작동하지 않습니다. 유용한 정보가 없습니다. 변수가 오류에서 언급 된 코드 행까지 정의되지 않으면 설정되지 않은 오류가 무엇인지 알아 내기 위해 단계를 추적하기 시작할 수 있습니다. 다른 어떤 오류가 있었습니까? ** 그것이 ** 이전 라이브 사이트에서 ** 작업 한 경우 완전히 다른 문제 인 오류를 보지 못했음을 의미합니다. 문제를 더욱 디버그하는 데 도움이되는 유용한 정보를 제공하지 않았습니다. 오류 메시지가없고 문맥에서 벗어난 코드는 더 이상 아무것도 할 수 없습니다. 변수를'var_dump '하십시오. 문맥 안에 부호를 더 보여주십시오. – Sherif

관련 문제