Question sur les sessions et la transmissions de plusieurs variables

Signaler
Messages postés
3032
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021
-
Messages postés
3032
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021
-
bonjour a tous

si j ai bien compris le système des variables dans un espace membres
elles sont déclarées dans la page de connexion dans session_start

et ensuite on peux les appeler dans les autres pages a condition d ouvrir une session

donc dans mon exemple ci dessous c est la variable user qui est déclarée et peux être appelée dans les autres pages

jusque la ca va
mais comment faire pour faire passer plusieurs variables(email, et l ip par exemple en plus du pseudo

merci de l aide

voici la page de connexion

      <?php 
    session_start();
    require_once 'config.php';
 
    if(!empty($_POST['email']) && !empty($_POST['password']))
    {
        $email = htmlspecialchars($_POST['email']);
        $password = htmlspecialchars($_POST['password']);

        $check = $bdd->prepare('SELECT pseudo, email, password FROM utilisateurs WHERE email = ?');
        $check->execute(array($email));
        $data = $check->fetch();
        $row = $check->rowCount();

        if($row == 1)
        {
            if(filter_var($email, FILTER_VALIDATE_EMAIL))
            {
                
                if(password_verify($password, $data['password']))
                {
                    $_SESSION['user'] = $data['pseudo'];
                   
                    header('Location: accueil-peche-perle.php');
                    die();
                }else{ header('Location: index.php?login_err=password'); die(); }
            }else{ header('Location: index.php?login_err=email'); die(); }
        }else{ header('Location: index.php?login_err=already'); die(); }
    }
         


et voici une partie de la page ou je veux afficher le pseudo , l ip et le mail





<?php 
    session_start();
     if(!isset($_SESSION['user'])){
         header('Location:index.php');
         die();
     
    }
bla
bla bla

  <h1 class="p-5">Bonjour ! <?php echo $_SESSION['user']; ?></h1>
bla

bla 
?>  

EDIT : Question qui concerne directement le langage PHP ... donc déplacée dans le forum .. PHP !

5 réponses

Messages postés
33134
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 juillet 2021
3 636
Bonjour,

La variable $_SESSION fonctionne comme un Array Associatif....
Tu peux donc le manipuler exactement de la même façon ...

Messages postés
3032
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021
139
bonjour
merci pour la reponse

je pourrais donc dans al page de connexion écrire ceci

$_SESSION['user'] = $data['pseudo'];
$_SESSION['mail']=$mail;
			$_SESSION['ip']=$ip;
Messages postés
33134
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 juillet 2021
3 636
Oui.

Par contre je ne vois pas l'utilité de transporter l'ip de l'utilisateur en session...

et puis, en général, je "regrope" les informations "communes" ensemble.
Typiquement, pour l'utilisateur, ma variable de session sera du style
$_SESSION['user'] = array('id'=>$data['id'], 'pseudo'=>$data['pseudo'], 'mail'=>$mail) ;


(ce qui implique un changement de code dans tes autres pages :
Au lieu de récupérer le pseudo par :
$pseudo = $_SESSION['user'];

Tu le récupèreras via
$pseudo = $_SESSION['user']['pseudo'];

//ou plus proprement :
$pseudo = !empty($_SESSION['user']['pseudo']) ? $_SESSION['user']['pseudo'] : NULL;
Messages postés
3032
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021
139
bonjour jordane

merci pour ton aide, cela fait depuis plusieurs jours que je cherche a comprendre cette transmission de page en page

non l ip cela était l exemple simplement
ah ben oui du coup je comprends mieux la variable de session

par contre ce que j ai un peu plus de mal a comprendre
c est la récupération avec le code donnée


//ou plus proprement :
$pseudo = !empty($_SESSION['user']['pseudo']) ? $_SESSION['user']['pseudo'] : NULL;


et donc mon session_start sur ma deuxième page devient

		<?php 
    session_start();
     if(!isset($pseudo = !empty($_SESSION['user']['pseudo']) ? $_SESSION['user']['pseudo'] : NULL;)){
         header('Location:index.php');
         die();
     
    }
Messages postés
33134
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 juillet 2021
3 636
Non....
La tu écris un peu n'importe quoi ...
Déjà faut comprendre la ligne
//ou plus proprement :
$pseudo = !empty($_SESSION['user']['pseudo']) ? $_SESSION['user']['pseudo'] : NULL;

C'est ce qu'on appel l'écriture TERNAIRE ( une sorte de IF/ELSE )
Ce qui, en écriture "ancienne" .. reviendrait à faier
if(!empty($_SESSION['user']['pseudo'])) {
  $pseudo= $_SESSION['user']['pseudo'];
}else{
 $pseudo= NULL;
}


A noter que le !empty fait déjà un isset .. donc pas besoin de mettre les deux ...
!empty ( à lire NOT EMPTY ) signifie ( en anglais ) : PAS VIDE ....

Donc, on vérifie que la variable existe et n'est pas vide ( ni false , ni égale à zéro )

et donc, ton code devient
session_start();

// Récupération PROPRE  des variables AVANT de les utiliser :
$pseudo = !empty($_SESSION['user']['pseudo']) ? $_SESSION['user']['pseudo'] : NULL;

//On vérifie si le pseudo est renseigné dans la variable de session.. sinon.. on redirige :
if(!$pseudo){
     header('Location:index.php');
     exit; // evite les die()
}

Messages postés
33134
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 juillet 2021
3 636 >
Messages postés
33134
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 juillet 2021

Mais.. tout ça .. c'était déjà expliqué dans les différents liens que je t'ai donné dans tes précédentes questions.... à croire que tu ne les a pas lu ...
Messages postés
3032
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021
139
Merci pour l aide et l explication
j avoue que j ai très dur avec ce php
pourtant ce n est pas dire que je ne regarde pas des tutos ou autre
je trouve pas mal de solutions
mais des fois je beuge(surement l âge )
des que j en aurais fini avec mon site
je vais m attaquer a une formation , je trouve ce langage super cool

je viens donc d essayer ce que tu viens de m envoyer

mais lorsque je veux afficher le pseudo avec un echo , cela ne me retourne rien sur les autres pages

j ai essaye avec ceci

  <h1 class="p-5">Bonjour ! <?php echo $_SESSION['pseudo']; ?></h1>
Messages postés
33134
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 juillet 2021
3 636
Donc.. encore une fois ....

ON RECUPERE PROPREMENT LES VARIABLES AVANT DE LES UTILISER

.. ici... ça donnerait
<?php
// Récupération PROPRE  des variables AVANT de les utiliser :
$pseudo = !empty($_SESSION['user']['pseudo']) ? $_SESSION['user']['pseudo'] : ""; // là, si la variable de session n'existe pas.. ça retournera une chaine vide  ""  .
?>
<h1 class="p-5">Bonjour ! <?php echo $pseudo; ?></h1>
Messages postés
3032
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021
139
ah ok

super cela fonctionne enfin , un tout grand merci

voila la source de mes problèmes et de mes essais
pourtant je suis allé voir des tutos

pffff pourtant j ai passe toute une matinée a regarder un tuto

et dans le code lorsqu il appelle la variable

lls écrivent au milieu du code

ce morceau de code

<h1 class="p-5">Bonjour ! <?php echo $pseudo; ?></h1>



le soucis c est que c est pas évident de trouver des tutos sérieux

alors pour résumer si je comprends bien (car j aime comprendre aussi

je déclare mes variables dans la page de connexion (ce qui est logique )

ensuite dans chaque session_start de chaque page je récupère mes variables

et dans le code a nouveau je les récupères si je veux afficher le contenu d une variable

je pensais que le fait qu elles soient dans le session_start étaient suffisant