6

javascript を使用して HTML ページでセッション処理を行うことはできますか?

はいの場合、どのように?そうでない場合、なぜですか?

4

6 に答える 6

5

JavaScript は Cookie のみをサポートします。ユーザー セッションを追跡するように設定できますが、セッションの使用はサポートされていません。

function createCookie(name,value,days) {
    var expires = "";
    if (days) {
       var date = new Date();
       date.setTime(date.getTime()+(days*24*60*60*1000));
       expires = "; expires="+date.toGMTString();
    }
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') {
            c = c.substring(1,c.length);
        }
        if (c.indexOf(nameEQ) == 0) {
            return c.substring(nameEQ.length,c.length);
        }
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

ソース: http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/19283/how-to-save-session-values-in-javascript

于 2012-05-07T09:36:04.620 に答える
3

セッションはサーバー側のメカニズムであるため、セッションを開始および管理するにはサーバー ロジックが必要です。

于 2012-05-07T09:32:24.107 に答える
2

「セッション」という用語は通常、サーバー側のメカニズムに使用されますが、サーバー側のスクリプトなしでは当然使用できませんが、ログイン追跡のみが必要な場合は、JS で疑似セッションを実装できます。

  • ユーザーログインのタイムスタンプを値として隠しフィールドを実装する
  • ユーザーが重要なアクションを行うたびに、このフィールドを新しいタイムスタンプで更新します
  • で疑似 cronjob を実行しsetinterval()、非表示フィールドの値が許可されたセッション時間よりも古いかどうかを確認します
  • 古い場合は、セッション タイムアウト コードを実行します

ただし、注意してください。

  1. このようなメカニズムは、サイトとパラメーター (監視されたアクション、チェック間隔の頻度) によっては、クライアントのブラウザーにストレスを与える可能性があります。
  2. ユーザーがブラウザのウィンドウ/タブを閉じた場合、これは生き残れません
于 2012-05-07T09:51:13.500 に答える
1

javascriptを使用してHTMLページでセッション処理を行うことはできますか?

間接的に。AJAXを使用して、セッション対応のサーバー側HTTPハンドラーを呼び出します。jQuery.ajax()AJAXを簡単にし、多くの例があります。

たとえば、これは.Netで、WCFエンドポイント、Webサービス、またはセッション状態が維持されているのと同じプロセスにアクセスできるページを呼び出すことによって行われます。

この方法で、セッションで値を取得/設定することができます。

于 2012-05-07T09:36:53.047 に答える
1

JS からセッションに直接アクセスすることはできません。JavaScriptがクライアントで実行されている間、サーバーに保存されます。ただし、間接的に行うこともできます。たとえば、隠しフィールドに保存し、サーバーに送信し、隠しフィールドの値を取得してセッションに割り当てます。

于 2012-05-07T09:35:07.960 に答える