我目前有一个允许用户编辑条目的表单。但是,似乎不可能每个选项卡使用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] ']到错误日志。
出了什么问题?
答案 0 :(得分:1)
你不能这样做。最好的方法是使用Ajax,因此,您将向每个标签(或页面)传递“ID”,如:
editPost.php?id=someID
而且,每次按保存时,都应使用 id 参数发送内容以保存。