저는 잠시 동안 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
...
질문이 분명하지 않습니다. –
@HermannStephaneNtsamo 질문입니다; 세션 변수와 같은 이름의 변수를 선언하면 왜이 경고가 발생합니까? – Stu