2013-07-24 3 views
0

방금 ​​래칫 (http://maker.github.io/ratchet/)을 사용하기 시작했습니다. 그러나, 내가 겪고있는 가장 큰 문제는 실제로 로그 아웃하기 위해 사용자가 로그 아웃 버튼 (실제로 앵커 인 <a>)을 두 번 클릭해야한다는 것입니다.래칫 프레임 워크 : 로그 아웃 링크를 두 번 클릭해야합니다.

저는 iPhone 홈 화면에 저장할 응용 프로그램으로이 응용 프로그램을 전체 화면 웹 응용 프로그램으로 시작할 수 있습니다. 일반적으로 세션은 그러한 웹 앱이 닫힐 때 유지되지 않습니다 (일반 Safari와는 대조적으로 샌드 박싱 됨). 나는 99 % 확신한다. 왜냐하면 PHP 세션뿐만 아니라 쿠키를 사용하여 사용자가 전체 화면 웹 앱을 닫은 후에도 로그인 상태를 유지할 수 있기 때문에이 두 번 클릭 로그 아웃 문제가 있다는 것이다. (두 번째 대답은 this post). 다음과 같이

내 로그 아웃 스크립트입니다 :이 문제는 라쳇의 push.js 함께 할 수있는 뭔가가있을 수 있습니다 생각하지만 난 data-ignore="push"으로 로그 아웃 링크를 설정 한 경우에도, 현재 페이지 단지 (Safari에서 다시 열립니다

// logout.php 

<?php 

session_start(); 

setcookie(session_name(),"",time()-3600); 
$_SESSION = array(); 
session_destroy(); 
header('Location: /'); 

?> 

사용자가 자신의 홈 화면에 저장 한 경우 전체 화면 인터페이스에서만 실행되기를 원하기 때문에 자체적으로 성가신 일입니다.) 그리고 나는 다시 한번 로그 아웃해야합니다.

Safari를 통해 동일한 문제에 액세스 할 때이 문제는 전체 웹 응용 프로그램으로 실행하는 데 문제가되지 않습니다.

모든 포인터?

답변

0

나는이 문제를 해결했다고 생각합니다. 내가 전에 게시 한 링크에서, 나는 내 주요 PHP의 모든 페이지에 다음 코드를 삽입했다 : 나는 이것을 완전히 이해하지

$cookieLifetime = 365 * 24 * 60 * 60; // A year in seconds 
setcookie(session_name(),session_id(),time()+$cookieLifetime); 

, 그러나 나는 기본적으로 세션을 허용하는 쿠키를 만드는 있다고 얻을 앱이 iOS의 샌드 박스 풀 스크린 웹 앱 모드로 실행되는 경우에도 유지됩니다. 나는 으로이 코드를 내 login.php 스크립트에서 제거하는 것으로 해결할 수 있었지만 내 앱의 모든 다른 페이지에서이 코드를 유지했습니다. logout.php은 이전과 동일하게 유지됩니다. 이제 iPhone에 다시 저장해도 홈 스크린에 저장된 전체 화면 웹 앱을 통해 사용자가 계속 로그인됩니다. 또한 두 번이 아니라 한 번 탭하여 로그 아웃 할 수도 있습니다.