2015-01-16 3 views
-1

array_key_exists 태그가있는 이전 게시물 29 개를 모두 확인했는데 문제를 해결할 수있는 특정 질문을 찾을 수 없습니다. 우리 서버가 최근에 업데이트되었고 PHP 5.2.17로 업그레이드되었습니다. (그렇지만 여전히 그 사실은 알고 있지만, 우리는 계속 발전하면서 문제를 고치고 있습니다. 5.3은 한 번에 처리하기에 너무 많은 문제를 야기 시켰습니다. 혼자서 5.4). 위의 코드 (내가 생각하는) 우리가 세션이 이미 설정되어 있는지 확인하고 존재하고 있습니다에서array_key_exists throwing error : 두 번째 인수는 배열 또는 객체 여야합니다.

[ERROR][2][array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object]

else if(array_key_exists("ACCOUNT", $_SESSION) && $_SESSION["ACCOUNT"] == $target){ 
    // do nothing, we are a-ok 
} 

:

우리의 웹 페이지는 array_key_exists에 연결 오류 메시지를 던지고있다 현재 계정. 그렇다면 우리는 아무 것도하지 않습니다. 그렇지 않으면 우리는이 후에 다른 else 문에서 세션을 설정합니다.

$_SESSION["ACCOUNT"]이 쿠키에 설정됩니다. '계정'값은 데이터베이스에서 계정을 식별하는 데 사용되는 하위 도메인입니다. 다음은 계정의 쿠키가 표시된 행입니다. 계정이 존재합니다.

SESSION[ACCOUNTID] = 39 
SESSION[ACCOUNT] = demo 
SESSION[PAIDACCOUNT] = 0 

제 질문은 어떻게 그 오류를 던지지 않도록 코드 된 코드를 작성해야합니까?

감사합니다.

+1

'위해서 var_dump ($ _ SESSION)을 사용한다' – zerkms

+1

당신은으로 session_start()''로 세션을 시작 했습니까? – Raptor

+0

오류는 명시 적으로 두 번째 인수 ('$ _SESSION') *가 배열 또는 객체 *가 아니라고 말합니다. 그것이 무엇인지 확인 했습니까? – deceze

답변

0

당신은 isset 대신

else if(isset($_SESSION["ACCOUNT"]) && $_SESSION["ACCOUNT"] == $target){ 
    // do nothing, we are a-ok 
} 
+0

이것이 작동하고 광산이 왜 작동하지 않았는지 확실하지 않지만 오류 메시지가 사라졌습니다. 이것은 PHP 4에서 PHP 5.2.17로 변경 되었습니까? – perdrix

+0

PHP 4와 5.2.17 사이에 어떤 변화가 있었는지 잘 모르겠지만, $ _SESSION이 아직 존재하지 않으면'array_key_exists'가 에러를 던지기 때문에 작동합니다.'isset'는 단지 FALSE를 반환합니다. – BrokenBinary

+0

BrokenBinary에게 도움을 주셔서 감사합니다! – perdrix

관련 문제