저는 몇 달 동안이 PHP 웹 애플리케이션을 개발했습니다. 갑자기 사용자 중 한 명이 로그인 할 수 있다고 불평했지만 어떤 버튼을 클릭하자마자 세션이 종료되었습니다! 같은 문제가 여러 브라우저에서 발생했습니다.클라이언트의 시계가 미래에 설정되면 PHP 세션이 즉시 만료됩니다.
몇 가지 테스트를 한 후 원래 세션이 만료 되었기 때문에 사용자가 아무 버튼이나 클릭 할 때마다 새로운 세션 ID가 생성되었음을 알았습니다.
나는 사용자의 컴퓨터 시계를 흘끗보고 어떤 이유에서든 ... 놀랍습니다! 그의 시계는 앞으로 3 개월이되었습니다! 그런 일이 실패와 어떤 관련이 있는지 나는 몰랐다. 그러나 나는 시계를 고쳤다. 아직도 그것은 작동하지 않았다. 나는 모든 쿠키를 지웠다. 아직 아무것도. 그래서 브라우저를 다시 시작한 다음 다시 작동하기 시작했습니다.
내가이 문제에 관해 가장 가까운 정보는 this question에 대한 Shimon Amit의 답변이었습니다. 좋아, 이제는 시계의 "잘못된 설정"이 원인이라는 것을 알고 있습니다. 문제는 ... 모든 고객의 컴퓨터 시계를 제어 할 수는 없습니다. 그들 중 일부는 미래에 컴퓨터 시계를 설정할 수 있습니다.
내 질문 : 거기에 어떤 해결책이 있습니까? 어떤 속임수? 나는 고객이 "절름발이"라는 오류를 발견하고 응용 프로그램에 대한 신뢰를 깨뜨리는 것을 원하지 않습니다. 실제로는 내 잘못이 아닙니다.
사용자의 시계가 상대적으로 정확할 것이라고 기대하는 것은 무리라고 생각하지 않습니다. 어쩌면 두 번째로 내려 가지 않을 수도 있지만, 3 개월은 우스꽝 스럽습니다. 하지만 과거 20 년 동안의 견과가 아닙니다. –
전적으로 동의합니다. 불행히도 응용 프로그램이 작동을 멈 추면 사용자는 나를 비난 할 것이고 결국에는 실패를 분석하는 데 시간을 낭비해야 할 것입니다. 먼 미래에 발생하면이 "버그"를 잊어 버렸을 것입니다. 그래서 저는 실제로 진정한 해결책을 찾고있는 것이 아니라, 어플리 케이션을 어리석게 만드는 것을 시도하고 있습니다. – Bizarro