PHP session 在刷新时不保存

标签 php mysql session

所以,我有一个 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/

相关文章:

php - 如何更新 Laravel session 数组中的单个值?

php - PHP 的对象浏览器

python - FPM 和 WSGI 的区别

java - 抽象类和接口(interface)在一起?

MySQL 不相等的日期之间的连接

mysql - 需要帮助让我的 mysql 查询更快

php - Symfony 3 登录后更新用户数据

mysql - 如何在 Eclipse 中配置 Servlet 以使用 JPA 项目?

java - 在请求之间用 spring 保持状态

php - 如何使用 PHP/Apache 实现 session 复制