reactualiser un script php

Statut
N'est pas ouverte pour d'autres réponses.

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
 

guslinux

Gamerz'ien
DeScH a dit:
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
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).
 

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 :)
 
1er
OP
DeScH

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 :)
 

guslinux

Gamerz'ien
DeScH a dit:
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 :)
-> 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);
}
 

Ahava

Revenant
tu peux expliquer ton code ?

et comment l'utiliser ?
 
1er
OP
DeScH

DeScH

AstaLaVista
houla, merci mais je ne comprends rien du tout au code :oops:
 

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 ^^

Rem : C'est Microsoft qui est l'initiateur de l'objet xmlHttpRequest en 1999. Mozilla a "copier" la fonctionnalité.
 
1er
OP
DeScH

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 :)
 

guslinux

Gamerz'ien
DeScH a dit:
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 :)
C'est à tester.
Ce système est implémenté sur http://www.rando-equestre.be pour le calendrier.
 

Bingo

Beer Addict
DeScH a dit:
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 :)
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".
 

guslinux

Gamerz'ien
Bingo a dit:
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".
Ya moyen de contourner le problème ... j'ai lu ca dans un book sur AJAX.
 

Bingo

Beer Addict
guslinux a dit:
Ya moyen de contourner le problème ... j'ai lu ca dans un book sur AJAX.
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 !
 

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¤ !!
 

Bingo

Beer Addict
guslinux a dit:
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.
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 ?

guslinux a dit:
AJAX : Le guide complet
Bruno Catteau & Nicolas Faugout
Micro Application
12¤ !!
Ca je vais acheter ! Merci !
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut