Question sur les sessions et la transmissions de plusieurs variables

Fermé
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 - Modifié le 4 mars 2021 à 08:47
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 - 4 mars 2021 à 09:55
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

jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
4 mars 2021 à 08:46
Bonjour,

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

0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
4 mars 2021 à 08:54
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;
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
Modifié le 4 mars 2021 à 08:58
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;
0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
Modifié le 4 mars 2021 à 09:19
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();
     
    }
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
4 mars 2021 à 09:30
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()
}

0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707 > jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024
4 mars 2021 à 09:31
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 ...
0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
4 mars 2021 à 09:40
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>
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
4 mars 2021 à 09:42
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>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
4 mars 2021 à 09:55
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
0