reactualiser un script php

Discussion dans 'Web, design' créé par DeScH, 26 Mars 2007.

Statut de la discussion:
Fermée.
  1. Offline
    DeScH AstaLaVista
    Salut

    Je dispose d'un fichier include (cookie.php)

    Toutes les pages l'intègrent. Je voudrait que seul ce script soit réactualisé après 10min. et donc pas toute la page. Est-ce qu'il y a moyen de faire ça?

    Merci
    DeScH, 26 Mars 2007
    #1
  2. Offline
    guslinux Gamerz'ien
    Tu met un timeout en JS au bout de 10 min.

    Rem : Ca dépend de ce que tu en fais, mais ca peut etre plus intéressant d'utiliser xmlhttprequest pour faire l'actualisation (moins lourd).
    guslinux, 26 Mars 2007
    #2
  3. Offline
    Ahava Revenant
    Pour exécuter un script php toutes les x temps, tu peux utiliser un service cron de ton hébergeur s'il t'en propose, sinon des sites existent pour les lancer aussi...

    Pour rafraichir un script qui agit sur un client soit une refresh à la dure si c'est une page web que le client va afficher, soit du JavaScript comme dit guslinux...

    Je fais que compléter ce qu'il dit : tout dépend de ce que tu veux faire :)
    Ahava, 26 Mars 2007
    #3
  4. Offline
    DeScH AstaLaVista
    En fait ce script servirait juste à réactualiser le code php (non visuel) de la page cookie.php pour réenregistrer dans la base de données les connectés dans le site :)
    DeScH, 26 Mars 2007
    #4
  5. Offline
    guslinux Gamerz'ien
    -> xmlhttprequest()

    Code:
    function getHTTPObject() {
      var xmlhttp;
      /*@cc_on
      @if (@_jscript_version >= 5)
        try {
          xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
          } catch (e) {
          try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (E) {
            xmlhttp = false;
            }
          }
      @else
      xmlhttp = false;
      @end @*/
      if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        try {
          xmlhttp = new XMLHttpRequest();
          } catch (e) {
          xmlhttp = false;
          }
        }
      return xmlhttp;
    }
    
    var http;
    function importXML(request){
    	http = getHTTPObject();
    	http.open("GET", request, true); 
    	http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	http.send(null); 
    	http.onreadystatechange = function (){retour_requete();}
    }
    
    function retour_requete() {
     	if (http.readyState == 4 && http.status == 200){
    			traitement_http();
    	}
    }
    
    function traitement_http(){
    	var xmlDoc = http.responseXML;
    	alert(http.responseText);
    }
    guslinux, 26 Mars 2007
    #5
  6. Offline
    Ahava Revenant
    tu peux expliquer ton code ?

    et comment l'utiliser ?
    Ahava, 26 Mars 2007
    #6
  7. Offline
    DeScH AstaLaVista
    houla, merci mais je ne comprends rien du tout au code :oops:
    DeScH, 26 Mars 2007
    #7
  8. Offline
    guslinux Gamerz'ien
    Plusieurs partie distincte au code :

    Commencons par la partie centrale :

    Code:
    var http;
    function importXML(request){
    	http = getHTTPObject();
    	http.open("GET", request, true); 
    	http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	http.send(null); 
    	http.onreadystatechange = function (){retour_requete();}
    }
    importXML recoit une url en argument.
    Cette fonction initialise un objet xmlHttpRequest à l'aide de la fonction getHTTPObject().
    Ensuite elle envoie une requete http de type GET à l'url passée par argument.
    Lors du changement d'état de la connexion http, c'est la fonction retour_requete() qui est executée.

    Fonction retour_requete() :
    Code:
    function retour_requete() {
     	if (http.readyState == 4 && http.status == 200){
    			traitement_http();
    	}
    }
    
    function traitement_http(){
    	var xmlDoc = http.responseXML;
    	alert(http.responseText);  
    }
    Lors que le statut = 200 et que readyState = 4, alors la fonction traitement_http() est appelée.

    La fonction traitement_http() montre à l'utilisateur le résultat de la requete sous forme de texte. Possibilité de traiter le resultat sous forme d'XML.

    Dans ton cas, tu n'as pas besoin de traiter le retour de la requete.

    La dernière partie traite de l'initialisation de l'objet xmlHttpRequest. En effet, c'est objet est implémenté de manière différente sous IE et Firefox. D'où la nécéssité de faire une initialisation en fonction du browser.

    Code:
    function getHTTPObject() {
      var xmlhttp;
      /*@cc_on
      @if (@_jscript_version >= 5)
        try {
          xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
          } catch (e) {
          try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (E) {
            xmlhttp = false;
            }
          }
      @else
      xmlhttp = false;
      @end @*/
      if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        try {
          xmlhttp = new XMLHttpRequest();
          } catch (e) {
          xmlhttp = false;
          }
        }
      return xmlhttp;
    }
    Cette partie de code là, je l'ai copiée d'un tuto :p

    Rem : C'est Microsoft qui est l'initiateur de l'objet xmlHttpRequest en 1999. Mozilla a "copier" la fonctionnalité.
    guslinux, 26 Mars 2007
    #8
  9. Offline
    DeScH AstaLaVista
    Merci. Je vais essayer de le faire mais ca va etre chaud.

    Par contre, est-ce que l'utilisateur qui consultera la page ne risque-t-il pas de recevoir un message venant du navigateur qui demande si il veut bien exécuter le controle active X? Je me trompe p-e mais je préfère demander :)
    DeScH, 26 Mars 2007
    #9
  10. Offline
    guslinux Gamerz'ien
    C'est à tester.
    Ce système est implémenté sur http://www.rando-equestre.be pour le calendrier.
    guslinux, 27 Mars 2007
    #10
  11. Offline
    Bingo Beer Addict
    Non, par contre il faut que la page appelée soit sur le même domaine que le javascript. C'est une protection contre le "cross site scripting".
    Bingo, 27 Mars 2007
    #11
  12. Offline
    guslinux Gamerz'ien
    Ya moyen de contourner le problème ... j'ai lu ca dans un book sur AJAX.
    guslinux, 27 Mars 2007
    #12
  13. Offline
    Bingo Beer Addict
    Même sous Netscape / Firefox ? C'est eux qui posent problème en général.
    Si tu retrouves la solution ça m'intéresse !
    Bingo, 27 Mars 2007
    #13
  14. Offline
    guslinux Gamerz'ien
    Code:
    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
    Mais ils conseillent quand meme d'utiliser un script php comme "proxy" car sous firefox le comportement serait parfoit currieux.

    Référence :
    AJAX : Le guide complet
    Bruno Catteau & Nicolas Faugout
    Micro Application
    12¤ !!
    guslinux, 27 Mars 2007
    #14
  15. Offline
    Bingo Beer Addict
    Ah ouais, j'avais essayé ça mais ça ne marchait pas ! :-s
    D'ailleurs, d'après les docs de Mozilla il devrait y avoir un message d'avertissement lorsque tu demandes un changement de privilège, et je ne l'ai jamais eu !
    Ils ont peut-être changé ça dans les versions récentes de Firefox ?

    Ca je vais acheter ! Merci !
    Bingo, 27 Mars 2007
    #15
Statut de la discussion:
Fermée.