所以,我有一个 PHP 类,它有一个更新名为 $_SESSION['location']
的 session 变量的方法。但问题是,每次调用该方法时,它都找不到保存的 session 变量,并告诉我它尚未设置。它应该存储一个位置 ID,该方法根据 session 变量从 MySQL 数据库中提取下一个位置,然后存储新的 ID。但是 SQL 代码中应该包含该变量的位置是空的。
我在页面开头确实有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;
}
}
最佳答案
我已经测试了你的代码
**不要在此文件中使用 session_start()。
为了简单测试,首先将其添加到您的 compass() 函数中。
$_SESSION['location'] .= 'World';
然后使用这些代码创建一个 php 脚本。
<?php
session_start();
$_SESSION['location'] = 'Hello';
include_once('*your name of class file*');
$obj = new location();
$obj -> compass('north');
echo $_SESSION['location'];
?>
运行此脚本
如果输出是“HelloWorld”,那么您的 $_SESSION['location'] 正在工作。
关于PHP session 在刷新时不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26320878/