1

SESSIONの有効期限が切れても、部分的に機能するAJAX呼び出しがいくつかあります。

例:お問い合わせフォームが読み込まれ、入力でき、送信されたように見えますが、SESSION変数が存在しないため、バックエンドでAJAX呼び出しが失敗します。

次のようにセッションがまだ存在することを確認するために、PHPの一般的な部分を設定したかったのです。

 session_start();     
 <?php if(!isset($_SESSION['userid']) {header('Location: index.php');}?>

しかし、これでは何も起こりません。

私はheader()がページがロードされているときにのみ機能すると思います-これは正しいですか?

したがって、セッションで成功または失敗を返し、JQUERYからリダイレクトを行うには、AJAX呼び出しを取得する必要があると思います。

これはこれを行うための最良の方法ですか?header()はAJAX呼び出しでリダイレクトできますか?AJAX PHP呼び出しからリダイレクトを機能させる別の方法はありますか?

どうも

* アップデート *

はい、ページはすでに読み込まれています。AJAX呼び出しは、contactusリクエストを送信するポストページロード関数です。したがって、header()は私がここで読んだものからはダメだと思います。header()は、大きなPHPスクリプトの先頭に配置され、セッションが設定されているすべての要求に一般的に応答できるため、適切でした。

セッションを使用するAJAX呼び出しごとにチェックインを作成する必要があるようです。ジェネリック関数を使用できます。AJAXサイトでセッションの有効期限が切れたときにユーザーをログアウトするより簡単な方法はありますか?

4

2 に答える 2

2

AJAX呼び出しの場合、ページのヘッダーはすでに送信されているため、AJAX呼び出しを介して変更することはできません。代わりに、ヘッダーリダイレクトの代わりにメタリフレッシュを試してください。

<?php
session_start();
if(!isset($_SESSION['userid']) { 
    echo '<meta http-equiv="refresh" content="0; url=index.php">'; 
} 
?>
于 2012-05-05T07:05:16.353 に答える
1

次のようにyorスクリプトを更新します。

<?php
session_start();
if(!isset($_SESSION['userid']) {
  echo 'true';
} else echo 'false';
?>

jQueryチェックで:trueを返す場合、$ _ SESSION ['userid']がissetである場合、それ以外の場合はissetではない)

于 2012-05-05T07:50:12.050 に答える