Erreur Session objet non reconnue

Résolu/Fermé
PlagLeFleau Messages postés 8 Date d'inscription samedi 5 mars 2022 Statut Membre Dernière intervention 21 septembre 2022 - 5 mars 2022 à 13:25
PlagLeFleau Messages postés 8 Date d'inscription samedi 5 mars 2022 Statut Membre Dernière intervention 21 septembre 2022 - 5 mars 2022 à 23:44
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
A voir également:

1 réponse

yg_be Messages postés 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 décembre 2024 Ambassadeur 1 557
5 mars 2022 à 14:25
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 Date d'inscription samedi 5 mars 2022 Statut Membre Dernière intervention 21 septembre 2022
5 mars 2022 à 16:28
Je suis pas sur d'avoir compris mais voilà tous les fichiers que j'ai.
0
yg_be Messages postés 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 décembre 2024 1 557 > PlagLeFleau Messages postés 8 Date d'inscription samedi 5 mars 2022 Statut Membre Dernière intervention 21 septembre 2022
5 mars 2022 à 16:36
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 Date d'inscription samedi 5 mars 2022 Statut Membre Dernière intervention 21 septembre 2022 > yg_be Messages postés 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 décembre 2024
5 mars 2022 à 17:14
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 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 décembre 2024 1 557 > PlagLeFleau Messages postés 8 Date d'inscription samedi 5 mars 2022 Statut Membre Dernière intervention 21 septembre 2022
5 mars 2022 à 17:32
Il n'y en a pas d'autres?
0
PlagLeFleau Messages postés 8 Date d'inscription samedi 5 mars 2022 Statut Membre Dernière intervention 21 septembre 2022 > yg_be Messages postés 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 décembre 2024
5 mars 2022 à 17:48
pas en dehors de celle sur la photos
0