2010-06-02 4 views
1

내 사이트에서 몇 가지 기본적인 클릭 사기를 방지하고 세션 시간 데이터를 기반으로 링크를 구축하려고합니다.IE 캐시 된 세션의 세션 데이터가 일치하지 않습니까?

모든 것이 FF로 작동하지만 IE에서는 세션에 저장하는 정보가 어떻게 든 변경됩니다. 내가 메인 페이지를로드 할 때

, 나는 내가 페이지에 세션 값을 넣어 밖으로있어이

 
session_start(); 
$_SESSION['time']=time(); 

처럼 내 세션 변수를 설정, 그래서 나는 1275512393.

뭔가를 얻을 사용자가 링크를 클릭하면 아약스 요청을 보내고 그 페이지는 내가 경고하는 세션을 반환합니다.

 
session_start(); 
echo $_SESSION['time']; 
die(); 

경고 만 IE에서 1275512422.

입니다 반환하는 $ _SESSION [ '시간'] 그것은 '아무튼 원래 $ _SESSION ['시간 ']

다른 반환 시간은 항상 서로 가깝고 두 번째 것은 항상 첫 번째 이후이지만 항상 긍정적 인 것은 아니기 때문에 이것이 캐싱 문제임을 알 수 있습니다.

-------- 업데이트 - 문제는 facebook javascript로 인해 발생합니다. 아직 해결 방법 없음 --------------

맨체스터 (MANCHUCK)가 권장하는대로 코드를 게시하지 않으므로이 페이스 북 코드가 문제를 일으키는 지 궁금하다.

FB.ini ({appId : 'myappid', 상태 : true, 쿠키 : true, xfbml : true});

그래서 나는 그것을 제거하고 페이지를 다시 실행했으며, 이제 $ _SESSION 시간이 일치했습니다 !!

그래서 문제가 발견되었습니다. 필자는 어떻게 든 FB 자바 스크립트가 이전 세션의 값을 덮어 쓰는 FB 자바 스크립트 (PHP API가 아니라)를 사용하여 세션을 만들고 있다고 생각했습니다.

나는 자바 스크립트를 다시 작성하고 세션 이름을 $ _SESSION [ 'mytime'] 또는 $ _SESSION [ 'time2']로 변경하려고 시도했지만 문제가 여전히 존재합니다. 날짜 ('Ymd G : h : s') 또는 날짜 ('Ymd G : h : s')와 같은 다른 시간 함수를 사용하려고 시도했지만 '$'를 검색 할 때 시간이 항상 몇 초씩 증가합니다. _SESSION 두 번째 페이지에서.

나는 이런 일이 일어날 수 있고, 그것이 가능하다는 것을 상상할 수 없다는 것에 놀랐지 만 지금은 4 번이나 돌아 왔고, 자바 스크립트 한 줄을 꺼낼 때마다 모든 것이 작동합니다 !

안타깝게도 facebook connect를 사용하지 않는 것이 실제로이 프로젝트의 옵션은 아닙니다.

+4

세션 데이터는 브라우저가 아닌 서버에 저장됩니다. PHP는 고유 ID를 가진 쿠키를 브라우저에 보냅니다.세션에 저장 한 데이터는 서버에 저장되며 기본적으로 파일에 저장되지만 변경할 수 있습니다. 우리가 볼 수 있도록 전체 코드를 붙여 넣을 수 있습니까? – MANCHUCK

+0

그게 내가 MANCHUCK라고 생각했던 것입니다. 그래서 나는 이런 종류의 오류를 보게되어 매우 놀랐습니다. 불필요한 것들을 없애고 더 많은 코드를 게시하려고 노력할 것입니다. – pedalpete

답변

1

내 생각에 메인 페이지가 두 번 실행되어 세션이 $ _SESSION [ 'time']에 할당 된 새 값으로 다시 시작됩니다. 그래서 항상 약간 증가합니다. 웹 서버 로그를 보거나 Fiddler를 사용하여 페이지가 두 번 요청되었는지 확인하십시오. 그렇다면 this이 도움이 될 수 있습니다.