Problème variable de session

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Problème variable de session

    Bonjour à tous,
    Je suis débutant sur Joomla et, dans le cadre du développement d'un composant, je rencontre un souci avec l'utilisation de la variable de session.

    Voici le code figurant dans la page de base du composant

    Code PHP:
    $session =& JFactory::getSession();
    if(isset(
    $session))
        {
            echo 
    "la session existe";
        }
        else{
            echo 
    "pas de session";
        }

        if(!isset(
    $session->name))
        {
            
    $session->set('name',"TOTO");
        }
    else
    {
        echo 
    "existe déjà";
    }
        
    $controller JControllerLegacy::getInstance('InfoDocument');
        
    $controller->execute(JFactory::getApplication()->input->get('task'));
        
    $controller->redirect(); 
    Je ne comprends pas pourquoi à chaque rechargement de la page, je ne passe pas dans else du second if.

    Merci d'avance pour votre aide
    Dernière édition par ossepove à 15/12/2018, 15h51

  • #2
    Bonjour,

    Je pense qu'il n'est pas utile de tester la session car elle est créée automatiquement quand vous démarrez votre application. Essayez plutôt le code suivant:

    Code:
    $session = JFactory::getSession();
     $sa = $session->get('name');
     if(!isset($sa))   {
         $session->set('name','test');
      } else{
         echo $sa;
     }
    Pascal
    If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

    Commentaire


    • #3
      Envoyé par ossepove Voir le message
      Bonjour à tous,
      Je suis débutant sur Joomla et, dans le cadre du développement d'un composant, je rencontre un souci avec l'utilisation de la variable de session.

      Voici le code figurant dans la page de base du composant

      Code PHP:
      $session =& JFactory::getSession();
      if(isset(
      $session))
      {
      echo 
      "la session existe";
      }
      else{
      echo 
      "pas de session";
      }

      if(!isset(
      $session->name))
      {
      $session->set('name',"TOTO");
      }
      else
      {
      echo 
      "existe déjà";
      }
      $controller JControllerLegacy::getInstance('InfoDocument');
      $controller->execute(JFactory::getApplication()->input->get('task'));
      $controller->redirect(); 
      Je ne comprends pas pourquoi à chaque rechargement de la page, je ne passe pas dans else du second if.

      Merci d'avance pour votre aide
      Hello.

      Tu ne peux pas tester "session->name".

      $session->set('name',"TOTO");
      ne crée par une propriété name de $session
      (ce serait idiot d'avoir une méthode spécifique du framework pour faire cela).

      La méthode set est + compliquée que cela (en fait elle crée un objet de la classe JObject dans l'instance de classe où elle est appelée).

      Pour tester si 'name' a déjà été défini, et donc fait l'objet d'un set au préalable (donc dans ton cas si la variable de session a déjà été crée) tu peux utiliser un get avec une valeur par défaut, puis tester cette valeur par défaut.
      Voir : https://api.joomla.org/cms-2.5/classes/JObject.html
      Dernière édition par roland_d_alsace à 15/12/2018, 18h20
      A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
      Rejoignez le Joomla Users Groupe Alsace...
      roland_d_alsace va-t-il devenir roland_du_grand_est ?

      Commentaire


      • #4
        Merci pmleconte et roland_d_alsace pour votre aide.

        Commentaire

        Annonce

        Réduire
        Aucune annonce pour le moment.

        Partenaire de l'association

        Réduire

        Hébergeur Web PlanetHoster
        Travaille ...
        X