Framework XAJAX et SESSION EXPIRE

Signaler
Messages postés
112
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
13 juin 2010
-
The Red Man
Messages postés
112
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
13 juin 2010
-
Bonjour,

Comme le montre le sujet du problème j'ai un gros problèmes avec l'utilisation de XAJAX ainsi que les sessions expirées de PHP. En effet, lorsque je souhaite utiliser une fonction que j'ai créé en php pour l'adopter avec XAJAX et que la session est expirée, je ne peux pas exécuter la fonction et c'est ce qui est normal.

Ce que j'aimerai savoir c'est comment savoir que la session est expirée ?

Je suis allé sur le site officiel voir la doc très merdique dans laquelle il n'explique pas grand chose et j'ai beau cherché, j'ai pas réussis a trouver, c'est la raison pour laquelle je me retourne vers vous (si vous avez déjà utilisé xajax évidemment :)).

Pour être clair, je recherche à connaitre cette solution pour afficher un message à l'utilisateur (car je suis en plein développement d'une application de gestion) pour qu'il soit prévenu que la session a été expirée et le renvoyer vers la page de connexion voilà tout.

Cordialement,

The Red Man

7 réponses

Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
12
un if(isset($_SESSION)) ça ne suffit pas ??
S.
Messages postés
112
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
13 juin 2010
2
Malheureusement non ! A croire que XAJAX c'est un peu merdique. J'essaie de trouver une fonction XAJAX pour essayer de savoir si la session est expirée ou non en javascript. Mais j'ai du mal a trouver. C'est dommage d'avoir rien prévu pour ça ou alors c'est moi qui ne trouve rien.

En cours de recherche...
Messages postés
662
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
18 septembre 2009
1
Bonjour,

xhr_object.open("POST", "ajax.php?PHPSESSID=<?php echo $_COOKIE['PHPSESSID']; ?>", false);
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

devrait fonctionner.
Messages postés
57
Date d'inscription
samedi 30 avril 2005
Statut
Membre
Dernière intervention
12 septembre 2009

Bonjour,

j'ai le même problème avec xajax pour tester si ma session est fini.
Le code que g réalisé interprète la fin de session mais ne redirige pas la page.

je la charge à chaque appel d'une fonction quelconque grâce à ceci :
$xajax->register(XAJAX_PROCESSING_EVENT, XAJAX_PROCESSING_EVENT_BEFORE, "fct_session");

function fct_session()
{
wash_sessions();//supprime les sessions obeslètes

if(isSession()==false){//session existe pas
$objResponse = new xajaxResponse();
$objResponse->alert("ko".$_SESSION['mod_id']);
$objResponse->redirect("http://".$_SERVER['SERVER_NAME']."/login/logout.php?message=4", $iDelay=1);
return $objResponse;
}else{
if(isPermission()==false){//acces ko
$objResponse = new xajaxResponse();
$objResponse->redirect("http://".$_SERVER['SERVER_NAME']."/login/logout.php?message=21", $iDelay=1);
return $objResponse;
}else{
$objResponse = new xajaxResponse();
return $objResponse;
}
}
}

l'erreur indiqué lors avec debug est :
ERROR: No response processor is available to process the response from the server.
Content-Type: text/html; charset=ISO-8859-1

comme si il y avait qqchose avant le header et empêche la redirection.

Quelqu'un à t'il une idée?

merci d'avance
Messages postés
112
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
13 juin 2010
2
ta fonction a l'air très sympa.

Je ne voulais plus trop perdre du temps. Cela dit, j'ai géré les sessions en JS pour essayer de trouver une meilleur solution en attendant (Pas très propre mais ça fonctionne) :

// DELAI DE LA SESSION EN SECONDES
// TEMPS DE CONNEXION DE LA SESSION
var DELAY = 1800;

// URL DE REDIRECTION
var REDIRECT_HREF = 'http://www.site.com';

// ON MULTIPLIE PAR 1000 POUR AVOIR LE TEMPS EN MILLISECONDE
setTimeout('display_session_dialog(300,50,"SESSION EXPIREE","session msg")', DELAY * 1000);


Voici la fonction display_session_dialog :

     /* dialog for session avec JQuery */
     function display_session_dialog(w,h,_title,inner_html)
     {


        $('
 ' +
            '
' +

            inner_html +

          ' 
 ').dialog({
          bgiframe: false,
          height: h,
          width: w,
          modal: true,
          buttons: { "Ok": function()
                           {
                             $(this).dialog("close");
                             location.href = REDIRECT_HREF;
                           },
                   },
          closeOnEscape: true,
          close : function(ev, ui)
          {
            location.href = REDIRECT_HREF;
            $(this).remove();
          }
        });

     }

Messages postés
112
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
13 juin 2010
2
Sinon j'avais essayé de testé version PHP mais aucun résultat (exemple repris du forum XAJAX mais je me souviens plus du lien '_') :

<?php
  //
  // REDIRECTION AVEC XAJAX
  //
  function xajax_redirect($url)
  {

    $_response = new xajaxResponse();

    $_response->redirect($url);

    return $_response;

  }


  //
  // REDIRECTION AVEC HEADER DE PHP SI $_REQUEST['xjxfun'] N'EXISTE PAS 
  // QUI CORRESPOND AU NOM DE LA FONCTION xajax_redirect
  //
  function xajax_session_out_redirect($url)
  {

    // ON VERIFIE SI ON PEUT UTILISER UNE FONCTION XAJAX
    if (!isset($_SESSION['USER']))
    {
      // SI ON EST LA, CELA IMPLIQUE QUE LA SESSION EST
      // EXPIRE CAR AUCUNE FONCTION XAJAX NE PEUT ETRE UTILISE
      // PAR CONSEQUENT ON VA SAUVEGARDE LA FONCTION XAJAX DE
      // REDIRECTION CI-DESSUS : xajax_redirect EN UTILISANT 
      // $_POST['xjxfun'] et $_POST['xjxargs'] POUR LES ARGUMENTS
      // CAR IL FAUT BIEN METTRE L'URL DE REDIRECTION EN ARGUMENT

      $_POST['xjxfun'] = 'xajax_redirect';

      // [0] car il y un seul argument de la fonction xajax_redirect
      $_POST['xjxargs'][0] = $url;

      // ON ENREGISTRE LA FONCTION
      $_xajax = new xajax();
      $_xajax->registerFunction('xajax_redirect');
      $_xajax->processRequest();

    }
    else
    {
      header('location : ' . $url);
    }

  }
?>
Messages postés
112
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
13 juin 2010
2
J'avais oublié, en utilisant la version JS, à chaque utilisation des fonctions XAJAX, je remets la variable "DELAY" à 1800. Ce qui évite de travailler seulement pendant 30 Min sur une interface géré entièrement par AJAX.