2016-08-31 5 views
1

ユーザーが開いたタブごとにセッションが必要です。セッションはクッキーに保存され、クッキーはタブやそのすべてを認識しないので、これは不可能だと言う人もいます。別のタブで異なるセッションを持つ方法

しかし、私はおそらくそれが可能だったと思うようになったPHPマニュアルにコメントがありました。私は2番目の部分をどうやって行うのか分かりません。しかし、最初から始めましょう。

したがって、アイデアは一意のIDに基づいて異なるSession_namesを持っていて、そのすべてをURLに渡しています。だから、このようなものです:

if(!preg_match('/^SESS[0-9]+$/',$_REQUEST['SESSION_NAME'])) { 
         $_REQUEST['SESSION_NAME']='SESS'.uniqid(''); 
        } 
       output_add_rewrite_var('SESSION_NAME',$_REQUEST['SESSION_NAME']); 
       session_name($_REQUEST['SESSION_NAME']); 

これまでのところ、私は一意のIDを生成しています。問題は、このIDを自分のタブにどのように渡すのですか? URLを介して?それでも、どうすればURLに挿入するのですか?コメント者は次のように指定しました:

< ?php 
header('location: script.php?'.session_name().'='.session_id() 
     . '&SESSION_NAME='.session_name()); 
?> 

<input type="image" src="button.gif" onClick="javascript:open_popup('script.php?<?php 
echo session_name(); ?>=<?php echo session_id(); ?>&SESSION_NAME=<?php echo session_name(); ?>')" /> 

しかし、私は自分のウェブサイトにこれを実装する方法がわかりません。私は、どのように私はこのURLにセッション情報を追加する

document.getElementById("details").action = "../details.php?tipo=" + tipo + "&periodo=" + periodo; 

(私はJSを通じて開いてるということ)このページにそれを渡す必要がありますか?

EDIT:すべてのタブが別のページに情報をエクスポートしてからExcelファイルにエクスポートできるため、タブごとに別のセッションが必要です。その部分はうまくいきますが、ユーザーが2つのページを同時に開くと、最新のものだけがセッションを通過します。

答えて

1

あなたのアプローチはこのタスクには少し複雑すぎます。

変数を混乱させる代わりに、ランダムなものを保存してvarsを書き直す代わりに、入れ子になった配列をセッション変数に格納するだけで済みます。

例えば、ユーザは、物事を開始します]ページで、

$_SESSION['<random_string>']=array(); 

ような何かをして、「隠れた」入力フィールドの1に保存されている。このランダムな文字列の値を持っています。

フォームを送信するか、セッション変数を使用して操作のいずれかの種類を行う必要があるときはいつでも、

if($_POST['action']=='Buy_bananas') 
{ 
if(isset($_SESSION['<string>'])) 
{ 
buy($_SESSION['<string>']['bananas_to_buy']); 
} 
else 
echo "Stop breaking code"; 
} 
を行います
関連する問題