아주 간단한 설명으로 아주 이상한 문제가 있습니다 만, 몇 시간 동안 디버깅을 한 후에는 무슨 일이 일어나는지 알 수 없습니다. LAMP 스택을 사용하는PHP가 "532142118"을 세션 변수
, PHP는 여기에 5.4
시스템 느릅 나무의 단순화 된 버전은 여전히 몇 가지 이상한 행동을 재현합니다.
간단한 자체 제작 프레임 워크에서 탭의 페이지가 검색 등에 사용될 때 어떤 URL이 활성 상태 였는지를 '기억'하는 가로 메뉴 (탭)를 만들었습니다. get 매개 변수로 인해 마지막 검색 결과를 즉시 볼 수 있습니다.
그래서 하나의 메뉴에서 '탭',이 URL을 활성화:이 변수는 세션 변수에 넣고
/customer/2/customer_email/
: $ _SESSION [ 'tab_menu'] [ 'CUSTOMER_EMAIL'] = $ _SERVER [ 'REQUEST_URI'];
페이지를 새로 고치거나 다른 탭으로 이동 한 후 탭의 URL을 세션에서 읽을 수 있습니다. 나는 URL 뒤에 매개 변수를 GET 넣으면
/customer/2/customer_email/532142118
이 같은 이상한 번호로 ... 어떤 과정을 삽입 :하지만 어떤 이유로, 저장된 URL이 변경됩니다. 나는이 URL로 탭에 액세스한다면 : 세션 배열이 동일한 페이지로드에 다음과 같이 표시됩니다
/customer/2/customer_email/?foo=bar
:
$_SESSION['tab_menu']['customer_email'] = /customer/2/customer_email/?foo=bar
내가 다른 페이지로 이동 한 후 그러나, 세션 데이터 것 읽기 : 나는 $ _SESSION 배열이 코드의 마지막 시점에서 ($ _ SESSION) 위해서 var_dump에 의해 좋아 보이는 것을 확인
$_SESSION['tab_menu']['customer_email'] = /customer/2/customer_email/532142118
. $ _SESSION 데이터가 코드 시작 부분에 session_start() 바로 뒤에있는 데이터를 덤프하여 다음 새로 고침을 변경했는지 확인했습니다. 내가 이렇게하면
, 테스트를 위해, 이상한 숫자는 세션 데이터에 추가되지 않습니다 : 내가 다른 다른 URL을 탐색 할 경우
$_SERVER['REQUEST_URI'] = '/customer/2/customer_email/';
이 같은 문제가 발생하지 않습니다
/customer/3/customer_email/
더 많은 일들이 내가 시도 : C
- Canged에게 세션 배열에 사용되는 키,하지만하지 않았다 문제.
- 동일한 설정으로 다른 서버에서 테스트합니다. 여기서도 발생하지 않습니다.
- URL을 세션 배열에 넣은 직후에 세션 데이터를 쓰려고 시도했지만 그 결과로도 아무 것도 해결되지 않습니다.
- strcmp(), strcasecmp()를 사용하여 변수 $ _SERVER [ 'REQUEST_URI']를 문자열 '/ customer/2/customer_email /'과 비교하여 메모장 ++에서 16 진수로 표시하고 PHP 자체에서 16 진수로 표시하려면 stackoverflow 또는 PHP에서 발견 된 기능.net
- $ _SESSION [ 'tab_menu'] [ 'customer_email']에 URL을 넣기 전에 URL을 직렬화하려고 시도했지만 숫자 532142118이 마술처럼 직렬화 된 데이터에 추가되었습니다.
- 번호 532142118을 디코딩하려고 시도했지만 어떤 것과도 관련시킬 수 없습니다. 2 주 동안 변하지 않았습니다.
- 서버를 다시 시작했습니다.
- 'tabs'를 제어하는 logica를 거의 완전히 다시 작성했지만 시스템은 여전히 해당 서버 변수에 정지합니다.
질문 : 세션 데이터를 변경된 기능은 무엇
- ? 어떻게 디버깅 할 수 있습니까?
- 왜 모든 URL에서 그런 일이 발생하지 않습니까? 나는이 시스템을 몇 년 동안 여러 탭에 사용하고 있으며,이 이상한 행동이 발생하는 것은 이번이 처음입니다.
- $ _SERVER 변수를 사용할 때 발생하며 자체 입력 문자열로 추가 할 때가 아닌 이유는 무엇입니까?
- 이 번호는 무엇을 의미합니까? 532142118
일부 반응/입력에 호핑!
편집 : 마침내 대답
mysql> SELECT from_unixtime (532142118);은 도움이된다면'1986-11-12 06 : 45 : 18'을 제공합니다. – Hussain
시도한 목록에는 다시 시작이 포함되지 않습니다. – palindrom
@HussainTamboli 예, 오늘 날짜와 관련이 있다고 생각하여 서버 날짜를 11 월 30 일으로 변경했지만 번호는 그대로 유지됩니다. 그리고 일주일 전 그 숫자도 그 것이기 때문에 시간이 지날수록 아무 것도 할 수 없다고 생각했습니다. – Piemol