Erreur Session objet non reconnue

Résolu
PlagLeFleau Messages postés 8 Statut Membre -  
PlagLeFleau Messages postés 8 Statut Membre -
Bonjour,

J'ai un problème lorsque j'essaie de récupérer l'objet que j'ai dans enregistré dans la variable de session.
Voilà l'erreur :

Fatal error: Uncaught Error: The script tried to call a method on an incomplete object. Please ensure that the class definition "Connected" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide an autoloader to load the class definition in C:\xampp\htdocs\php\menu.php:28 Stack trace: #0 C:\xampp\htdocs\index.php(10): require_once() #1 {main} thrown in C:\xampp\htdocs\php\menu.php on line 28

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <link href="css/menu.css" rel="stylesheet" type="text/css">
    <title>Acceuil</title>
</head>
<body class="body">
<table>
    <tr>
        <td>
            <a href="../index.php" class="menu">
                <img src="../images/AcceuilButton.png" width="85" height="37">
            </a>
        </td>
        <td>
            <a href="php/deconnexion.php">
                <img src="../images/DeconnexionButton.png" width="85" height="37">
            </a>
        </td>
        <?php
        include_once 'Class/Rang.class.php';
        include_once 'Class/GestionUtilisateur.class.php';
        require_once 'Class/Connected.class.php';
        $gestion = new GestionUtilisateur();
        if($_SESSION['connected'] != null) {
            $user = $_SESSION['connected'];
            if($user->getRank() === $gestion->getRanks()[0]->getRank()) {
                echo '<td><a href="list_user.php"><img src="../images/ListeUtilisateurButton.png" width="85" height="37"></a></td>';
            }
        }
        ?>
    </tr>
</table>
</body>
</html>


Class connected:
<?php

class Connected
{
    private string $username;
    private string $password;
    private string $rank;

    public function __construct(string $username, string $password, string $rank)
    {
        $this->setUsername($username);
        $this->setPassword($password);
        $this->setRank($rank);
    }

    public function getUsername() : string
    {
        return $this->username;
    }

    public function setUsername(string $username): void
    {
        $this->username = $username;
    }

    public function getPassword() : string
    {
        return $this->password;
    }

    public function setPassword(string $password): void
    {
        $this->password = $password;
    }

    public function getRank() : string
    {
        return $this->rank;
    }

    public function setRank(string $rank): void
    {
        $this->rank = $rank;
    }
}


Class GestionUtilisateur:
<?php
include_once "Utilisateur.class.php";
include_once 'Rang.class.php';
class GestionUtilisateur
{
    private array $users = array();
    private string $dsn = 'mysql:host=127.0.0.1;dbname=univers;port=3306;charset=utf8';
    private array $ranks;

    public function __construct(){
        try {
            $bdd = new PDO($this->dsn, 'root' , '');
        }
        catch (PDOException $exception) {
            mail('VOTRE_EMAIL', 'PDOException', $exception->getMessage());
            exit('Erreur de connexion à la base de données');
        }
        $reponse = $bdd->query('SELECT * FROM user');
        while ($donnees = $reponse->fetch()) {
            $this->addUser($donnees['username'],$donnees['password'], $donnees['rang'], $donnees['id']);
        }
        $reponse = $bdd->query('SELECT * FROM rank');
        while ($donnees = $reponse->fetch()) {
            $this->ranks[] = new Rang($donnees['id_rank'], $donnees['rank']);
        }
        $reponse->closeCursor();
    }

    public function addUser($username, $password, $rank, $id) {
        $this->users[] = new Utilisateur($username, $password, $rank, $id);
    }

    public function addNewUser($username, $password) {
        try {
            $bdd = new PDO($this->dsn, 'root' , '');
        }
        catch (PDOException $exception) {
            mail('VOTRE_EMAIL', 'PDOException', $exception->getMessage());
            exit('Erreur de connexion à la base de données');
        }
        $sql = "INSERT INTO user(id, username, password, rang) VALUES (null,?,?,3)";
        $stmt= $bdd->prepare($sql);
        $stmt->execute([$username, $password]);
    }

    public function readTab() : string{
        $rang = null;
        $return = "<div class='centre'><table class='list'><tr><td class='listCell'>Ids</td><td class='listCell'>Usernames</td><td class='listCell'>Passwords</td><td>Ranks</td>";
        for ($i = 0; $i < count($this->users); $i++) {
            for ($j = 0; $j < count($this->ranks); $j++) {
                if($this->users[$i]->getRank() == $this->ranks[$j]->getId()) {
                    $rang = $this->ranks[$j]->getRank();
                    break;
                }
            }
            $return .= "<tr>";
            $return .= "<td class='listCell'>".$this->users[$i]->getId()."</td>";
            $return .= "<td class='listCell'>".$this->users[$i]->getUsername()."</td>";
            $return .= "<td class='listCell'>".$this->users[$i]->getPassword()."</td>";
            $return .= "<td class='listCell'>".$rang."</td>";
            $return .= "</tr>";
        }
        $return .= "</table></div>";
        return $return;
    }

    public function getUserRank(int $rankID) : string {
        for ($i = 0; $i < count($this->ranks); $i++) {
            if($rankID == $this->ranks[$i]->getId()) {
                return $this->ranks[$i]->getRank();
            }
        }
        return "null";
    }


    public function getUsers(): array
    {
        return $this->users;
    }

    public function getRanks(): array
    {
        return $this->ranks;
    }

}


Class rang:
<?php

class rang
{
    private int $id;
    private string $rank;

    public function __construct(int $id, string $rank)
    {
        $this->setId($id);
        $this->setRank($rank);
    }

    public function getId(): int
    {
        return $this->id;
    }

    public function setId(int $id): void
    {
        $this->id = $id;
    }

    public function getRank(): string
    {
        return $this->rank;
    }

    public function setRank(string $rank): void
    {
        $this->rank = $rank;
    }


}


Configuration: Windows / Firefox 97.0

1 réponse

yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 586
 
bonjour,
peux-tu indiquer le nom du fichier pour chaque ficher que tu partages?
nous as-tu montré l'ensemble de ton code?
0
PlagLeFleau Messages postés 8 Statut Membre
 
Je suis pas sur d'avoir compris mais voilà tous les fichiers que j'ai.
0
yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention   1 586 > PlagLeFleau Messages postés 8 Statut Membre
 
nous as-tu montré le contenu de tous ces fichiers?
quand tu partages le contenu d'un fichier, peux-tu veiller à préciser le nom du fichier?
0
PlagLeFleau Messages postés 8 Statut Membre > yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention  
 
Le premier fichier c'est le menu.php, le deuxième c'est le connected.class.php, le troisième c'est le GestionUtilisateur.class.php et le quatrième c'est le Rang.class.php
0
yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention   1 586 > PlagLeFleau Messages postés 8 Statut Membre
 
Il n'y en a pas d'autres?
0
PlagLeFleau Messages postés 8 Statut Membre > yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention  
 
pas en dehors de celle sur la photos
0