Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Can';t存储$\u会话变量_Php_Mysql_Session Variables - Fatal编程技术网

Php Can';t存储$\u会话变量

Php Can';t存储$\u会话变量,php,mysql,session-variables,Php,Mysql,Session Variables,我开发了这组2个脚本,以便使用$会话变量检查用户是否登录。我没有用饼干,因为我还不想去听爵士乐 这是login.php require 'host.php'; // Connection to database $message = ''; if (isset($_POST['submit'])) { $username = $_POST['username']; $password = $_POST['password']; if ((!$username) ||

我开发了这组2个脚本,以便使用$会话变量检查用户是否登录。我没有用饼干,因为我还不想去听爵士乐

这是login.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.
        }
    }

}
我想要检查会话的方法是在每个页面中包含文件,检查值为$logged==0

但它并没有在页面之间存储会话数据

希望你能帮助我


谢谢

id变量位于while循环内,不能在while循环外读取。这就是会话没有存储任何内容的原因

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

   $id = "";
   while ($consulta = mysql_fetch_array($query)) {
  ......
您可以尝试一下,如果它在while循环后回显某些内容 那样

  echo $id ;

我终于解决了这个问题

我要做的就是更改verify_session.php,并在mysql_num_rows()中将其设置为==0,而不是>0


谢谢大家的帮助

您是否在所有页面上都使用session_start()?如果我在每个页面中都包含verify_session.php,是的,我知道您是否尝试将login.php中的session_start放在php文件的顶部而不是页面的一半?在第二个脚本中,查询是否检查用户是否存在,如果存在,mysql_num_行应==0。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO。
  echo $id ;