Bonjour,

Voila je rencontre un problème avec mon code. Je fais un Blog et j'ai un probléme de récupération de l'id du membre après sa connexion. C'est en PHP POO et MVC.
Après la connexion je vois le message suivant (obtenu avec un var_dump pour vérifier ce que contient $_SESSION id)

array(2) { ["id"]=> string(1) "2" [0]=> string(1) "2" }

Donc je vois bien l'id dont la valeur est 2 (et c'est exact).

mais lorsque je clique sur "modifier le compte" (menu sur lequel j'arrive après validation de la connexion du membre) ... impossible de récupérer la valeur de cet id (c'est à dire 2) dans mon routeur pour aller chercher, via le contrôleur et le modèle, en base de données tous les éléments de ce compte et les afficher dans une page "Modification du compte" dans laquelle chaque champ affichera la valeur récupérée en base.

Mon code dans le routeur est :
elseif ($_GET['action'] == 'modifierMembre') { // Affiche ....... formulaire modifier membrearound
$Compte = intval($this->getParametre( $_SESSION, ['id']));around
if ($Compte != 0) {around
$this->ctrlMembre->vue($Compte);around
}around
}

Ce que je veux

Trouver la syntaxe qui me permet dans le routeur de récupérer la valeur de l'id du membre à partir de $ SESSION id

Ce que j'obtiens

Les message d'erreur suivants :
Notice: Undefined variable: _SESSION in /Applications/MAMP/htdocs/MonBlog-mvc-objet/Controleur/Routeur.php on line 150

Notice: Array to string conversion in /Applications/MAMP/htdocs/MonBlog-mvc-objet/Controleur/Routeur.php on line 293

Ce dernier message affiche : "Paramètre 'Array' absent" ... sur la page du blog. Normal c'est le retour de la gestion d'erreur.

Merci d'avance de votre aide sur ce problème certainement "basique" mais sur lequel je galère depuis des heures malgré de nombreuses recherches sur ce site et d'autres ainsi que de nombreuses docs.

1 réponse


Bonjour.
Est-ce que la session est initialisée avant que le router soit chargé au moins ?
Sinon, pour que nous puissions mieux t'aider, il faudrait que tu nous montre ta méthode getParametre, car en premier argument tu lui passe la variable globale de la session et en second paramêtre un tableau, je ne comprends pas pourquoi tu as besoin d'une méthode pour vérifier la valeur d'un index de la variable session, ou alors passes juste l'index à la méthode et tu retournes le résultat, soit par exemple :

$this->getSessionParametre('id');

function getSessionParametre($index)
{
    if (session_status() === PHP_SESSION_NONE) {
        session_start();
    }
    return $_SESSION[$index];
}