Framework XAJAX et SESSION EXPIRE

The Red Man Messages postés 111 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 13 juin 2010 - 4 sept. 2009 à 22:11
The Red Man Messages postés 111 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 13 juin 2010 - 22 sept. 2009 à 10:35
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

syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
5 sept. 2009 à 19:35
un if(isset($_SESSION)) ça ne suffit pas ??
S.
0
The Red Man Messages postés 111 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 13 juin 2010 2
5 sept. 2009 à 23:42
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...
0
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
7 sept. 2009 à 11:37
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.
0
mariobotta Messages postés 57 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 12 septembre 2009
12 sept. 2009 à 15:15
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
0

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

Posez votre question
The Red Man Messages postés 111 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 13 juin 2010 2
22 sept. 2009 à 10:13
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();
          }
        });

     }

0
The Red Man Messages postés 111 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 13 juin 2010 2
22 sept. 2009 à 10:30
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);
    }

  }
?>
0
The Red Man Messages postés 111 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 13 juin 2010 2
22 sept. 2009 à 10:35
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.
0
Rejoignez-nous