2013-12-11 1 views
1
에 추가합니다.

아주 간단한 설명으로 아주 이상한 문제가 있습니다 만, 몇 시간 동안 디버깅을 한 후에는 무슨 일이 일어나는지 알 수 없습니다. 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

  1. Canged에게 세션 배열에 사용되는 키,하지만하지 않았다 문제.
  2. 동일한 설정으로 다른 서버에서 테스트합니다. 여기서도 발생하지 않습니다.
  3. URL을 세션 배열에 넣은 직후에 세션 데이터를 쓰려고 시도했지만 그 결과로도 아무 것도 해결되지 않습니다.
  4. strcmp(), strcasecmp()를 사용하여 변수 $ _SERVER [ 'REQUEST_URI']를 문자열 '/ customer/2/customer_email /'과 비교하여 메모장 ++에서 16 진수로 표시하고 PHP 자체에서 16 진수로 표시하려면 stackoverflow 또는 PHP에서 발견 된 기능.net
  5. $ _SESSION [ 'tab_menu'] [ 'customer_email']에 URL을 넣기 전에 URL을 직렬화하려고 시도했지만 숫자 532142118이 마술처럼 직렬화 된 데이터에 추가되었습니다.
  6. 번호 532142118을 디코딩하려고 시도했지만 어떤 것과도 관련시킬 수 없습니다. 2 주 동안 변하지 않았습니다.
  7. 서버를 다시 시작했습니다.
  8. 'tabs'를 제어하는 ​​logica를 거의 완전히 다시 작성했지만 시스템은 여전히 ​​해당 서버 변수에 정지합니다.

질문 : 세션 데이터를 변경된 기능은 무엇

  1. ? 어떻게 디버깅 할 수 있습니까?
  2. 왜 모든 URL에서 그런 일이 발생하지 않습니까? 나는이 시스템을 몇 년 동안 여러 탭에 사용하고 있으며,이 이상한 행동이 발생하는 것은 이번이 처음입니다.
  3. $ _SERVER 변수를 사용할 때 발생하며 자체 입력 문자열로 추가 할 때가 아닌 이유는 무엇입니까?
  4. 이 번호는 무엇을 의미합니까? 532142118

일부 반응/입력에 호핑!

편집 : 마침내 대답

+0

mysql> SELECT from_unixtime (532142118);은 도움이된다면'1986-11-12 06 : 45 : 18'을 제공합니다. – Hussain

+0

시도한 목록에는 다시 시작이 포함되지 않습니다. – palindrom

+0

@HussainTamboli 예, 오늘 날짜와 관련이 있다고 생각하여 서버 날짜를 11 월 30 일으로 변경했지만 번호는 그대로 유지됩니다. 그리고 일주일 전 그 숫자도 그 것이기 때문에 시간이 지날수록 아무 것도 할 수 없다고 생각했습니다. – Piemol

답변

0

를 "나는 시도 일"7 추가 포인트! 올바른 방향으로 절 지적이 답변에

그리고 감사 :
PHP session variable changes between pages

내가 만든 페이지, 즉, 세션에 문제가 있었다 수입 이메일을 보이고있다. 일부 이메일의 HTML 소스와 함께, 존재하지 않는 이미지를로드 : 그래서 배경에

<img border="0" width="110" height="114" id="_x0000_i1025" src="532142118" /> 

,이 "532142118"로 추가 된 URL을로드하는 것, 완전히 네트워크 통계에 통합하고는 표시되지 것입니다 화면에 보이는 var_dumps.
나는 세션 변수가 설정된 지점에서 이메일 추적 기능을 사용하여 페이지가 여러 번 요청되었다고 결론을 냈습니다. 이미지 소스로 인해 추가 요청 페이지가 세션을 잘못 만들고 요청한 URL을 생성합니다.
이제 세션 변수에 URL을 넣지 않도록 특정 URL 요청을 제외하므로 잘못된 img 소스가 시스템에 영향을주지 않습니다.

입력 해 주셔서 감사합니다.