【发布时间】:2011-02-24 03:30:48
【问题描述】:
我有一个很奇怪的问题。
情况:通过 MySQL、PHP 5.2.4、通配符 cookie、FF/Opera/Safari/Chrome 工作的会话处理,IE7/8 不工作。
当我将变量保存到会话中时,该值会丢失。数据库在写入操作后仅显示“N”而不是“123456”。
示例:
$bar = 123456;
$_SESSION['foo'] = $bar;
但是当我在会话中保存一个常量时,它可以工作。
$_SESSION['foo'] = 123456;
这不是真正的客户端问题,但仅在 IE 中不起作用。
有什么想法吗?
编辑:
这是会话写入函数:
function _write($id, $data) {
$write = "UPDATE session SET time='".time()."', data='".mysql_real_escape_string($data)."' WHERE id='".mysql_real_escape_string($id)."'";
$result = @mysql_query($write);
if(mysql_affected_rows()) return $result;
else {
$write = "INSERT INTO session (id, time, data) VALUES ('".mysql_real_escape_string($id)."', '".time()."', '".mysql_real_escape_string($data)."')";
return @mysql_query($write);
}
}
当我打印更新查询 ($write) 时,一切看起来都很好。我可以手动执行 SQL,它也可以使用变量。
【问题讨论】:
-
感觉问题在于您如何处理会话,而不是传递给会话的值。你能提供更多的上下文/代码吗?
-
浏览器通常不重要,所以发生了一些奇怪的事情。
标签: php mysql session internet-explorer variables