Php 未保存会话

Php 未保存会话,php,session,Php,Session,我写了这个剧本。 它正在工作,但当我提升页面或返回页面时,会话不会被保存。我做错了什么 login.php <?php session_start(); require 'classes.php'; //if user is not yet authorized if ($_SESSION['user']->iduser == null) { $dbhandle = mysql_connect($hst, $usr, $pass); if (!$dbhandle)

我写了这个剧本。 它正在工作,但当我提升页面或返回页面时,会话不会被保存。我做错了什么

login.php

<?php
session_start();
require 'classes.php';

//if user is not yet authorized
if ($_SESSION['user']->iduser == null) {
    $dbhandle = mysql_connect($hst, $usr, $pass);
    if (!$dbhandle) {
        die('Could not connect: ' . mysql_error());
    }
    $selected = mysql_select_db($dbName, $dbhandle)
            or die("Could not select the database");

    $result = mysql_query(" query ");
    $resultArray = mysql_fetch_array($result);
    $num_rows = mysql_num_rows($result); //count how many rows returned
    //if 0 rows returned, then login was failed
    if ($num_rows == 0) {
        die('Error! Access denied. Incorrect username or password.');
    } else { //if username and password match
        $_SESSION['user'] = new user();
        $_SESSION['user']->iduser = $resultArray{'iduser'};
        $_SESSION['user']->fname = $resultArray{'fname'};
        echo 'Dear ' . $_SESSION['user']->fname . ', you succesfully logged in!';
    }
    //if user is already logged in
} else {
    echo 'You already logged in!<br>Your email is: ';
}
?>

类用户

<?php
class user {
    public $iduser = null;
    public $fname = null;
    public $lname = null;
    public $email = null;
    public $password = null;
    public $permission = null;
}
?>

在会话开始之前,您需要“require(classes.php)”

(简单回答:))

原因:调用session\u start时,会话被解码。要正确取消序列化对象,则必须已定义该类。因此,您需要在会话开始之前定义类-交换这两行就可以了

在会话开始之前,您需要“require(classes.php)”

(简单回答:))

原因:调用session\u start时,会话被解码。要正确取消序列化对象,则必须已定义该类。因此,您需要在会话开始之前定义类-交换这两行就可以了


兰尼斯特@Giant的可能复制品,请勿发送垃圾邮件;如果你没有什么要说的-不要回答。可能是@Giant of a Lannister的复制品,不要发送垃圾邮件;如果你没什么可说的,不要回答。另一个问题——把课时放在课堂上怎么样?它在所有文件中共享;因此,所有文件都需要它?这是您对编程逻辑和流程的要求。永远不要写两次东西,但写一个函数调用、一个include或类似的东西是一条规则,但不是所有的页面都需要会话?所以我不能回答这个问题。注意:每一页都解读类可能会增加不必要的开销-因此,如果类在会话中,请保持它们小而整洁。哦-只是一个警告,即使您不打算使用“用户”,您仍然需要在会话开始前声明类结构。否则,当重新编写会话时,另一个页面可能会将其弄糟。这可能有助于你的思维过程。另一个问题——把课程放在课堂上怎么样?它在所有文件中共享;因此,所有文件都需要它?这是您对编程逻辑和流程的要求。永远不要写两次东西,但写一个函数调用、一个include或类似的东西是一条规则,但不是所有的页面都需要会话?所以我不能回答这个问题。注意:每一页都解读类可能会增加不必要的开销-因此,如果类在会话中,请保持它们小而整洁。哦-只是一个警告,即使您不打算使用“用户”,您仍然需要在会话开始前声明类结构。否则,当重新编写会话时,另一个页面可能会将其弄糟。这可能有助于你的思维过程。