每个特定的browsertab使用会话cookie

时间:2013-12-18 08:55:09

标签: php ajax session-cookies

我目前有一个允许用户编辑条目的表单。但是,似乎不可能每个选项卡使用1(特定)cookie。每当用户编辑条目时,最后一个选项卡中的记录都会更新。

我在我的主脚本(eventfilters.php)中尝试了以下内容:

<?php
$cookie_name = $_SESSION['username'].md5(time());
session_name($cookie_name);
setcookie(session_name($cookie_name),session_id(),time()+"300");
if(!isset($_SESSION)){ session_start(); }

if (isset($_GET['edit'])){  
    // Pass cookiename in url variable $cookie, so it gets caught by $_GET['cookie']
    echo '<form action="eventfilters.php?save&cookie='.session_name().'" method="post">';

} else if (isset($_GET['save'])){
    if(isset($_GET['cookie'])){
        error_log("SAVE ".$_GET['cookie']); // Displays cookie url variable set by form action.
        error_log("LOW ".$_SESSION['level_low']); 
        // Displays correct session value received from ajax
    }
}

?>

`

ajaxcode(也在eventfilters.php中)包含这个(当页面已经加载时调用几次):

$.post("include/severitygroups.php",{'cookie_name': "<?php echo $cookie_name; ?>", 'serialized_sev_groups': serialized_sev_groups}, function(data){});

这似乎将正确的cookiename传递给另一个脚本,该脚本成功地返回$ _SESSION ['level_low'](因为它出现在error_log中)。

<?php
include('pdodb.php');

if(!isset($_SESSION)){ session_start(); }
$cookie_name = $_POST['cookie_name'];
error_log("SCRIPT ".$cookie_name);
error_log("COOKIEDATA ".$_COOKIE["$cookie_name"]);

// populating $_SESSION['level_low']
?>

似乎$ _GET ['save']填充错误的会话(由最后加载的eventfilters.php实例初始化),即使$ _GET ['save']记录正确的$ _SESSION ['level_low] ']到错误日志。

出了什么问题?

1 个答案:

答案 0 :(得分:1)

你不能这样做。最好的方法是使用Ajax,因此,您将向每个标签(或页面)传递“ID”,如:

editPost.php?id=someID

而且,每次按保存时,都应使用 id 参数发送内容以保存。