Création Var session par AJAX

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

  • [Problème] Création Var session par AJAX

    Bonjour,

    J'ai créé un composant.

    Dans une page PHP :
    . J'effectue par une balise A l'appel d'une autre page
    . Lors du clic de la balise, je crée une variable de session PersRech2 par une requête AJAX qui est envoyé par GET à un fichier CREER_VAR_SESSION.PHP

    Le script :
    . Crée la variable de session par JSON
    . Envoie la variable de session à la page CREER_VAR_SESSION
    . Appelle la page de destination de la balise A

    Or, le script AJAX :
    . Ne crée pas la variable de session PersRech2
    . Ouvre bien la page de destination

    J'ai checké toutes les variables de session, elle ne figure nulle part.

    Pouvez-vous m'aider à remédier à cette erreur.

    Fichier origine

    Code HTML:
    <?php
    \defined('_JEXEC') or die;
    
    use Joomla\CMS\HTML\HTMLHelper;
    use Joomla\CMS\Language\Text;
    use Joomla\CMS\Router\Route;
    
    HTMLHelper::_('jquery.framework');
    
    $cujus1 = $IdAsc;
    
    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    
    $query->select($db->quoteName(array('id', 'name', 'prename', 'sexe', 'naiss_annee', 'deces_annee')));
    $query->from($db->quoteName('#__daglink_personnes'));
    $query->where($db->quoteName('id') . ' = ' . $cujus1);
    
    $db->setQuery($query);
    $row = $db->loadRow();
    ?>
    
    <?php
    $sexe1 = ($row['3'] == 'm') ? 'M' : (($row['3'] == 'f') ? 'F' : $row['3']);
    $naiss = ($row['4'] > 100) ? $row['4'] : '???';
    $mort1 = ($row['5'] > 100) ? 'arbre20b2aa' : 'arbre20b7';
    $mort2 = ($row['5'] > 100) ? 'arbre20b1aa' : 'arbre20b8';
    
    echo '<div class="arbre100">';
    echo '<a id="lienVar" href="#">';
    echo '<div class="' . $mort1 . '">' . $row['2'] . '&nbsp;</div><div class="' . $mort2 . '">' . $row['1'] . '</div>';
    echo '</a>';
    echo '<div class="arbre101">';
    echo ($sexe1 == 'M') ? Text::_('COM_DAGLINK_PERSONNE_SEXE_HOMME') : Text::_('COM_DAGLINK_PERSONNE_SEXE_FEMME');
    echo '</div><br/>(' . $naiss . '&nbsp;-&nbsp;';
    echo ($row['5'] > 100) ? $row['5'] . ')</div>' : Text::_('COM_DAGLINK_VIE') . ')</div>';
    ?>
    
    <script>
    document.getElementById('lienVar').addEventListener('click', function(event) {
        event.preventDefault();
    
        // Décl. object
        var xhr = new XMLHttpRequest();
    
        // Récup. variable PHP
        var PersRech2 = <?php echo json_encode($row['0']); ?>;
     
        // Envoi variable
        xhr.open('GET', 'creer_var_session.php?varValue=' + encodeURIComponent(PersRech2), true);
    
        // Appel page destination
        xhr.onload = function() {
            if (xhr.readyState === 4 && xhr.status === 200) {
                console.log(xhr.responseText);
    
                // Redirect only if the session variable is set successfully
                if (xhr.responseText.trim() === 'Session variable PersRech2 ok') {
                    window.location.href = 'index.php?option=com_daglink&view=personnes&Itemid=398&lang=fr';
                }
            }
        };
    
        // Send the request
        xhr.send();
    });
    </script>


    Fichier creer_var_session.php

    Code HTML:
    <?php
    /
    \defined('_JEXEC') or die;
    
    use Joomla\CMS\HTML\HTMLHelper;
    use Joomla\CMS\Language\Text;
    use Joomla\CMS\Layout\LayoutHelper;
    use Joomla\CMS\Router\Route;
    use Joomla\CMS\Factory;
    use Joomla\CMS\Session\Session;
    
    HTMLHelper::_('jquery.framework');
    
    
    
    
    if (isset($_GET['varValue'])) {
        $PersRech2 = htmlspecialchars($_GET['varValue'], ENT_QUOTES, 'UTF-8');
    
        // Création var. session
        $_SESSION['PersRech2'] = $PersRech2;
    
        // Contrôle
        echo "Variable PersRech2 créée";
    } else {
        echo "Requête invalide";
    }
    ?>
    Merci d'avance de votre aide

    Philippe

  • #2
    Rebonjour Philippe,
    Même réponse que dans l'autre question sur ton poste "Ajax" : ChatGPT peut t'aider à avancer en analysant ton code et en te donnant au minimum la piste à suivre
    Attention ! ChatGpt est loin d'être sans faille et tu dois relire et tester les éléments de réponse. Par contre, cela oriente souvent vers la solution
    Cordialement,
    Chabi01 - http://www.xlformation.com

    Commentaire


    • #3
      Bonjour,

      Merci de t'être intéressé à mon problème.

      J'avais également eu recours à CHATGPT à de nombreuses reprises mais, les réponses étaient inopérantes.

      En définitive, j'ai résolu mon problème en faisant :
      . passer la variable par OPERATOR dans l'URL,
      . récupérant la variable OPERATOR par GET dans le fichier de destination

      Très cordialement

      Philippe

      Commentaire

      Annonce

      Réduire
      Aucune annonce pour le moment.

      Partenaire de l'association

      Réduire

      Hébergeur Web PlanetHoster
      Travaille ...
      X