我一会儿回来我发贴this question。我用AJAX脚本更新了这个问题,该脚本工作了大约1周。基本上我可以使用AJAX脚本中的session_start()
,然后我可以访问我需要的会话变量。AJAX脚本停止记忆会话
这真的很奇怪,但是周末过后我进来了,今天早上这个脚本不再工作了。这是非常简单的,在这里:
<?php
session_start();
$ajax_connection = mysql_connect('10.X.X.X',$_SESSION['username'],$_SESSION['password']);
$result_set = array();
while ($result_set[] = mysql_fetch_assoc($results)){
// do nothing
}
echo json_encode($results);
?>
上周这个工作得十分完美,而现在我的错误日志中我得到的Undefined index: username
和Undefined index: password
警告。当然,MySQL连接还没有建立。所以这个脚本没有运行与原始连接相同的会话。我使用error_log(session_id())
来检查父页面和AJAX脚本的ID,果然它们是不同的。当我重新加载页面并再次尝试时,页面和AJAX脚本的ID分别保持不变,但它们应该是相同的ID,而不是两个不同的ID。
无论如何,有没有人有任何想法,为什么这不会工作了,工作了一个多星期后?
为什么要将mysql连接信息存储在会话变量中? – 2012-03-26 12:44:06
@ N.B。那是因为它有效。我还有什么可以获得AJAX脚本的连接信息? – 2012-03-26 12:47:35
是什么阻止您将包含数据库凭证的文件包含到您的AJAX脚本中?对于10 000个用户,您将使用相同的信息填写会话。这不是真的可行吗?它显然也会给你带来问题。因此,这意味着一个糟糕的设计决定。我可以继续讨论它在共享主机等方面是不安全的,但是我不会这么做,这只是糟糕的设计决定,因为会将数据库信息存储在会话中。 – 2012-03-26 13:08:49