2016-08-31 62 views
1

我需要爲用戶打開的每個選項卡創建一個會話。有人會說這是不可能的,因爲會話存儲在cookie中,並且cookie不識別標籤和所有這些。如何在不同的選項卡中進行不同的會話

但是在PHP手冊上發表了一條評論,這讓我覺得這可能是可能的,但我不知道如何做第二部分。但是讓我們從頭開始。

所以,這個想法是基於一個唯一的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傳遞到我的標籤上?通過網址?即便如此,我將如何去插入到我的網址?評論者指定了這樣的事情:

< ?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(); ?>')" /> 

但我不知道如何實現這個到我自己的網站。我需要它傳遞到這個網頁上(我通過JS打開)

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

讓我怎麼會話信息添加到該網址是什麼?

編輯:我需要爲每個選項卡有不同的會話,因爲每個選項卡都可以將其信息導出到另一個頁面,然後導出到Excel文件。該部分工作正常,但如果用戶同時打開兩個頁面,則只有最新的一個會通過該會話。

回答

1

您的方法對於此任務有點過於複雜。

而不是混淆變量,試圖存儲隨機重寫變量的東西,你可以在會話變量中存儲嵌套數組。

例如,當用戶啓動的東西出來一個頁面上,這樣做

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

,然後有存儲在「隱藏」的輸入字段的一個此隨機字符串的值。

每當一個表單提交,或者你需要做的任何與會話變量的操作,做

if($_POST['action']=='Buy_bananas') 
{ 
if(isset($_SESSION['<string>'])) 
{ 
buy($_SESSION['<string>']['bananas_to_buy']); 
} 
else 
echo "Stop breaking code"; 
} 
相關問題