php - 无法存储 $_SESSION 变量

标签 php mysql session-variables

我开发了这组 2 个脚本,以便使用 $_SESSION 变量来检查用户是否登录。我没有使用 cookie,因为我还不想进入那个“爵士乐”。

这是登录.php

require 'host.php'; // Connection to database

$message = '';

if (isset($_POST['submit'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    if ((!$username) || (!$password)) {
        $message ='Preencha todos os campos.';
    } else{
        $username = preg_replace("#[^0-9a-z]#i","",$username);
        $password = sha1($password);

        $sql = "SELECT * FROM utilizadores WHERE nome_utilizador='$username' AND palavra_chave='$password' LIMIT 1";
        $query = mysql_query($sql) or die();
        if (mysql_num_rows($query) == 1) {
            // Logged in stuff
            session_start();
            $_SESSION['username'] = $username;
            $_SESSION['password'] = $password;
            while ($consulta = mysql_fetch_array($query)) {
                $id = $consulta['id_utilizador']; // ID of username.
            }
            $_SESSION['id'] = $id;
            $message = '<a href="calendario.php">Clique aqui para ir para o calendário.</a>'; // Message that is shown to redirect to another page.
        } else{
            $message = 'Os dados que inseriu estão incorrectos!'; // Data inserted is incorrect.
        }
    }

}

这是检查用户是否登录的文件

session_start();

include 'host.php';

if (isset($_SESSION['id'])) {
    $id = $_SESSION['id'];
    $password = $_SESSION['password'];
    //Verificar se o user existe.
    $sql = "SELECT * FROM utilizadores WHERE id_utilizador='$id' AND palavra_chave='$password' LIMIT 1";
    $query = mysql_query($sql) or die('Could not connect.');
    if (mysql_num_rows($query) > 0) {
        header('Location: logout.php');
    } else{
        // Logged in stuff
        $logged = 1;
    }
} else{
    $logged = 0;
}

我想要检查 session 的方法是将文件包含在每个页面中,并检查 $logged == 0。

但它不会存储页面之间的 session 数据。

希望你能帮助我!

谢谢!

最佳答案

您的 id 变量位于 while 循环内部,无法在 while 循环外部读取。这就是 session 不存储任何内容的原因

尝试在 while 循环之前定义 id 变量

   $id = "";
   while ($consulta = mysql_fetch_array($query)) {
  ......

你可以尝试一下 while 循环后是否回显某些内容 像这样

  echo $id ;

关于php - 无法存储 $_SESSION 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15001379/

相关文章:

php - 当暴露的过滤器被激活时,如何从 Drupal View 中删除最新内容?

Mysql 按日期排序

mysql - 2 个表查询 - 从每个表中选择并从两个表中报告

php - 显示 session 数组中的所有项目。仅显示顶部项目

php - POST 变量为空

php - PHP 中的 if( $x=1 || $y=1) 和 if( $x=1 | $y=1) 有什么区别

php - 通过ip访问虚拟主机

php - 通过 mysql 更新 PHP 中的表单

asp.net - ASP.NET session 的生存时间可以比应用程序长吗

postgresql - 在 DO block 内使用由 psql 元命令设置的变量