所以,我有一个PHP类,它有一个更新名为$_SESSION['location']
的会话变量的方法。但问题是,每次调用方法时,它都找不到保存的会话变量,并告诉我它没有设置。它应该存储位置ID,并且该方法基于会话变量从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;
}
}
答案 0 :(得分:0)
我已经测试了您的代码
**不要在此文件中使用session_start()。
对于简单测试,首先将其添加到指南针()函数中。
$_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'];
?>
运行此脚本
如果输出是&#34; HelloWorld&#34;然后你的$ _SESSION [&#39;位置&#39;]正在运作。
答案 1 :(得分:0)
检查你的phpinfo(),看看是否定义了会话保存路径。如果没有,请定义用于存储会话的目录。在您的代码中:
session_save_path('/ DIRECTORY IN THE SERVER');
然后再试一次。
答案 2 :(得分:0)
这更接近您的方法应该是什么样子。有一些设置可以帮助减少运行该函数时抛出的错误。有了这个功能和其他建议,你应该能够删除你得到的错误。
class location
{
public function compass($dir = '')
{
// Set the $select by $_SESSION or by your function
$select = (isset($_SESSION['location']))? $_SESSION['location']: $this->myFunctionToSetDefault();
// I set $dir to empty so not to throw error
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;
}
// This will return empty otherwise may throw error if $return is not set
return (isset($return))? $return:'';
}
}