Bonjour,

Voila je rencontre un petit problème avec mon code.
Je crée un site web personnel où les visiteurs pourront créer des comptes et se connceter. J'aimerais pouvoir afficher les informations de l'utilisateur connecté sur sa page de profil, mais depuis je suis calé. Je n'arrive qu'à affiché le username et le fullname alors qu'il existe d'autres variables (extra1,extra2,..) que je voudrais afficher.
Voici le code que j'ai écrit, (j'avoue je ne suis pas trop doué en programmation)

<?php
//On se connecte a la Base de donnee
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_password = '*************';
$mysql_database = 'user';
$mysql_table = 'members';
$db = mysqli_connect($mysql_host, $mysql_user, $mysql_password);
?>
<?php
if (isset($_SESSION['username']))
{
   echo $_SESSION['extra1'];
}
else
{
   echo '';
}
?>

Ce que j'obtiens

Mais quand j'essaie j'obtiens ''' Undefined index: extra1 in C:\xampp\htdocs\asa\memberslogin=true.php on line 244'''

J'ai besoin de votre aide svp.....

6 réponses


TokaLazy
Réponse acceptée

Salut

Au lieu de isset() qui te retournera false même si la clé du tableau existe mais qu'elle est null tu as array_key_exists() qui est pas mal.
A toi de voir si tu as besoin d'avoir une valeur differente de null dans ta condition.

<?php
$arr = ['key' => null];

isset($arr['key']); // false
array_key_exists('key', $arr); // true

?>

Bonsoir diasvore,

Tout d'abord la condition que tu utilises est assez étrange il te faudrait plutôt tester le champs que tu veux afficher ou encore les deux (si le deuxieme découle du premier) comme par exemple (il y plusieurs manières de le faire):

if (isset($_SESSION['username']))
{
    if(isset($_SESSION['extra1']))
    {
        echo $_SESSION['extra1'];
   }
}

précision : Le else dans ton exemple ne sert à rien selon moi, tu pourrais le supprimer.

Es-tu sûr qu'il existe d'autres indexes dans ta session courante ou du moins celui-ci en particulier ? Peux-tu faire un

var_dump($_SESSION)

pour t'en assurer et eventuellement reperer les problèmes d'index que tu pourrais rencontrer. Postes le résultat de celui-ci si tu ne trouve pas.

A+

diasvore
Auteur

Merci beaucoup de m'avoir répondu.
Quand j'utilise le ce que tu me propose sans le

var_dump($_SESSION)

il n'y a plus d'erreur mais la valeur de 'extra1' de l'utilisateur connecté se s'affiche pas.
Dès que j'insère dans le code

var_dump($_SESSION)

ca me renvoie cette erreur

array(4) { ["username"]=> string(10) "Azerty2018" ["fullname"]=> string(13) "Sandra Lamart" ["expires_by"]=> int(1519321869) ["expires_timeout"]=> int(600)

Le var_dump permet d'afficher le contenu de la variable $_SESSION, dans laquelle on peut voir qu'il n'y a pas l'index "extra1,extra2,.." dont il est question dans le premier post. Il est donc normal qu'une erreur survienne pour indiquer que l'index est innexistant dans le tableau.

diasvore
Auteur

comment insérer alors cet index dans le code et régler le problème

La variable $_SESSION est une variable à portée globale, il suffit donc d'y inserer la valeur voulue comme un tableau associatif classique depuis n'importe où de cette manière :

$_SESSION['mon_index'] = 'ma_valeur';

Ne pas oublier d'indiquer que l'on souhaite travailler avec les sessions avant de cette manière :

session_start();

Pour être plus précis dans la demande quelle information veux-tu afficher ?

Pour plus d'information sur les sessions : https://secure.php.net/manual/fr/reserved.variables.session.php