ホームページ  >  記事  >  php教程  >  asp.netおよびphpのwindow.openで開かれたウィンドウセッションの損失の解決策

asp.netおよびphpのwindow.openで開かれたウィンドウセッションの損失の解決策

WBOY
WBOYオリジナル
2016-07-09 09:10:181247ブラウズ

この問題に遭遇した人にとって、これが役立つことを願っています。以下は、ダウンロードできる asp.net のソースコードです。

window.open ウィンドウが開きます セッションが失われます

window.open は非常に不快なものですが、現在、多くのオフィス オートメーション システム (OA) で特定の用途に使用されることがあります。

ユーザーに操作の余地を与えるために、ユーザーがログインした後、window.open を使用してタイトルバーのみのウィンドウを開きます。


しかし、開いたウィンドウでは、ログインウィンドウで生成されたセッションが見つかりません。


1: asp.net での解決策:


1: ログインウィンドウがdefault.aspxの場合、バックグラウンドで次のように記述できます:

Actipro CodeHighlighter (フリーウェア) によって生成されたコードの強調表示
1
文字列 ユーザー = Request.Form["user"];
2
セッション["_uid"] =ユーザー;
3
文字列 sid =Session.SessionID;
4
Page.RegisterStartupScript
5
("オープン","<script></script>
6
window.open
7
('index.aspx?sid="+sid+"','_blank','ステータス=はい、スクロールバー=はい、サイズ変更可能=はい');
8
script>");
9

このようにして、新しく開いたウィンドウのindex.aspxにSessionIDを渡すことができ、このSessionIDをindex.aspxで使用することができます

セッションを再構築します。

2: Index.aspx では、次のようにセッションを再構築できます:

1 using System.Web.SessionState;
2
3 public partial class インデックス : System.Web.UI.Page
4 {
5 protected void Page_Load(objectsender, EventArgs e)
6 {
ToString();
8 SessionIDTest ss = newSessionIDTest(sid); 9 ss.CreateSessionID(Context); 10
} 11} 12
13 public
class SessionIDTest : SessionIDManager
14{
15
プライベート 文字列 sid; 16
public
SessionIDTest(
stringsid) 17 { 18
19 } 20 public
override
stringCreateSessionID(HttpContext context) 21 { 22
23
}
24 25}

その中で、SessionState 名前空間の下の SessionIDManager クラスを使用し、その CreateSessionID をオーバーライドします

この仮想メソッドはセッションを再取得するために使用されます。仮想メソッド CreateSessionID を書き換える必要があり、新しい Session を返します

SessionID、この SessionID はログイン インターフェイスの default.aspx から渡されるため、新しく構築された

について考えることができます。

セッションとログインウィンドウのセッションは1つのセッションです。

2: PHP での解決策:

1: PHP でこのセッション損失を解決するために同じ方法が使用されており、解決するには 2 つの関数のみが必要です。

session_start();
$sid=session_id();

session_id 関数は、ログインインターフェースの SessionID を取得する関数です。

2: 次に、.net と同じように、この SessionID に基づいてセッションを構築できます。


$sid=$_GET['sid'];

session_id($sid); session_start();


関数 Session_id はセッションを再構築するためのものです。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。