0

Ratchet ( http://maker.github.io/ratchet/ ) を使い始めたばかりで、素晴らしいです。ただし、私が抱えている大きな問題は<a>、ログアウトが実際に発生するために、ユーザーがログアウト ボタン (実際にはアンカー) を 2 回クリックする必要があることです。

これを iPhone のホーム画面に保存するアプリとして意図しており、フルスクリーンの Web アプリとして起動できます。通常、このような Web アプリを閉じると、セッションは維持されません (通常の Safari とは異なり、サンドボックス化されます)。全画面表示の Web アプリを閉じた後もユーザーがログインしたままになるようにするために、PHP セッションだけでなく Cookie も使用しているため、この 2 回クリックしてログアウトする問題があることは 99% 確信しています。 (この投稿の2番目の回答に従って)。

私のログアウトスクリプトは次のとおりです。

// logout.php

<?php

session_start();

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

?>

この問題は Ratchetのpush.js.data-ignore="push"そのフルスクリーンインターフェイス内でのみ実行したい)、それでもログアウトをもう一度タップする必要があります。

この問題は、Safari 経由でアクセスするときにも同じ問題があるため、全画面 Web アプリとして実行することの問題ではないようです。

ポインタはありますか?

4

1 に答える 1

0

私は問題を解決したと信じています。以前に投稿したそのリンクから、次のコードをすべてのメイン PHP ページに挿入しました。

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

私はこれを完全には理解していませんが、基本的には、アプリが iOS のサンドボックス化されたフルスクリーン Web アプリ モードで実行されている場合でも、セッションを維持できるようにする Cookie を作成していることがわかります。このコードをスクリプトから削除login.phpし、アプリの他のすべてのページに保持することで、問題を解決できました。logout.php以前のままです。これで、iPhone が再起動されても、ホーム画面に保存された全画面表示の Web アプリで、ユーザーはログインしたままになります。また、ログアウト ボタンを 2 回タップする代わりに、1 回タップするだけでログアウトできます。

于 2013-07-24T19:15:53.213 に答える