所以,我有一个PHP类,它有一个更新会话变量$_SESSION['location']
的方法。但问题是,每次调用该方法时,都找不到保存的会话变量,并告诉我它未设置。它应该存储一个位置ID,并且该方法根据会话变量从MySQL数据库中提取下一个位置,然后存储新的ID。但是SQL代码中应该包含变量的地方是空的。PHP会话在刷新时不保存
我确实在页面的开头有session_start()
。我试过手动设置变量,它也没有做任何事情。还尝试从另一个PHP页面访问该变量,也没有运气。请帮忙。
我的代码的小样本:
class location {
@session_start();
function compass($dir) {
$select = $_SESSION['location'];
if($dir == "north") {
$currentlat = mysql_result(mysql_query("SELECT `lat` FROM `locationdb` WHERE id=".$select), 0, "lat");
$currentlon = mysql_result(mysql_query("SELECT `lon` FROM `locationdb` WHERE id=".$select), 0, "lon");
$sql = "[THE SQL CODE THAT GETS THE NEXT LOCATION]";
$id = mysql_result(mysql_query($sql), 0, "id");
$_SESSION['location'] = $id;
$return['loc'] = $this->display_location($id);
$return['lat'] = $this->display_lat($id);
$return['long'] = $this->display_long($id);
$return['id'] = $id;
}
return $return;
}
}
请张贴您的代码。 – Ejaz 2014-10-12 01:14:00
你应该把'session_start();'放在类外的页面顶部。它应该只在加载时包含在页面中。你在哪里设置'$ _SESSION ['location']'? – Rasclatt 2014-10-12 01:19:11
这就是为什么很少使用错误抑制(@)并且仅用于非常特定的目的的一个示例。 – Devon 2014-10-12 01:20:48