2013-05-03 2 views
2

저는 잠시 동안 PHP5.3.8을 사용하고 있으며, 저를 위해 새로운 오류를 발견했습니다.전역 변수와 세션 변수를 선언하는 PHP

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

여기에 해결책이 있습니다. PHP session side-effect warning with global variables as a source of data.

그러나 아직 이해할 수 없습니다. 이유가입니다. 아는 한 $foo$_SESSION['foo'] 사이에 모호성이 없어야합니까?

사람들이이 오류를 throw한다고 말하는 온라인 스크립트를 테스트 해 보았지만 시스템에 경고를 내 보내지 않았습니다.이 경고를받는 스크립트는 복잡하고 스트라이핑이됩니다 오류를 복제하기 위해 몇 줄까지 줄이면 문제가되는 것으로 증명됩니다.

그러나 한 줄로 좁혔습니다.

$bonus = isset($_GET['bonus']) ? $_GET['bonus'] : ''; 

$_SESSION['bonus']는 이전 페이지에서 null로 설정되고, register_globals의 약 PHP4.2 일부터 떨어져있다, 그래서는 $ _GET 범위가 될 수 없습니다.

이렇게하면 처음으로 되돌아갑니다. 왜 갑자기 $bonus$_SESSION['bonus'] 사이에 문제가 발생합니까? 내가이 정확한 스크립트를 다른 사이트 (동일한 상자)에서 사용하고 있으며 오류가 없기 때문에 나는 갑자기 말한다.

다른 누군가가 나를 가리켜 주겠지 만 PHP가 세션 바 등을 다루는 방법과 왜 두 변수 사이에 문제가 있는지 자세히 설명 할 수 있습니까?

감사합니다.

[업데이트] 여기 찾고

;

[PHP는있다 ...] 당신이 전역 영역에서 세션 변수 를 초기화 할 수있는 문서화되지 않은 기능/버그 ...

는 내가 거기에 수도 같아요 PHP Runtime Configuration 그것은 그 언급하지 그 이상은 말할 것도없고. 그냥 PHP는 $_SESSION['foo'] != $foo ...

+0

질문이 분명하지 않습니다. –

+0

@HermannStephaneNtsamo 질문입니다; 세션 변수와 같은 이름의 변수를 선언하면 왜이 경고가 발생합니까? – Stu

답변

1

오프, 그것은 경고에 관한 기능을 꺼집니다하는 session.bug_compat_42을 설정해보십시오 $_SESSION['foo']/$foo에 문제가 있음을 나에게 이상한 것 같다. c.f. http://php.net/manual/en/session.configuration.php

+0

안녕하세요 Adder, 링크 주셔서 감사합니다, 나는 경고를 해제하는 방법을 알고 있지만, 단지 그것을 왜 무시하고 있는지 정확히 왜 발생하는지에 대한 좀 더 자세한 정보를 찾고 있습니다. – Stu

+0

음, 설명서를 읽으면서, 전역'$ alert '에 할당하여 기능이 켜져 있으면 $ _SESSION ['alert ']'을 설정할 수 있습니다. 그리고'session.bug_compat_42'는 기능을 해제한다는 경고를 끄지 않습니다. – Adder

+0

아 설명, 설명해 주셔서 감사합니다 :) – Stu

관련 문제