Recuperer l'heure locale du visiteur

cgershon Messages postés 288 Statut Membre -  
avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je veux recuperer l'heure locale de mes visiteurs. ou savoir de quelle region du monde ils naviguent
comment recuperer cela ?
merci

5 réponses

  1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Salut.

    Les fonctions date() et time() en PHP retournent l'heure du serveur.
    Pour récupérer l'heure du client, je pense qu'il faudra passer par du Javascript et l'envoyer avec AJAX.

    Par exemple :
    /* Fonction qui stocke le timestamp local dans $_SESSION['localTime'] */
    function sendTimestamp() {
    	var date = new Date();
    	var timestamp = Math.floor(date.getTime() / 1000);
    
    	var xhr = null;
    
    	if (window.XMLHttpRequest || window.ActiveXObject) {
    		if (window.ActiveXObject) {
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		} else {
    			xhr = new XMLHttpRequest(); 
    		}
    	} else {
    		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    		return;
    	}
    
    	xhr.onreadystatechange = function() {
    		if(xhr.readyState == 4 && (xhr.status == 0 || xhr.status == 200)) {
    			return true;
    		}
    	};
    
    	xhr.open('POST','recv_client_timestamp.php',true);
    	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	xhr.send('timestamp='+timestamp);
    }

    Et le script recv_client_timestamp.php :
    <?php
    session_start();
    $_SERVER['localTimestamp']['server'] = $_SERVER['REQUEST_TIME'];
    $_SERVER['localTimestamp']['client'] = (int) $_POST['timestamp'];


    Et la fonction pour récupérer le timestamp correcte :
    <?php
    session_start();
    
    function getClientTimestamp() {
    	$diff = $_SERVER['REQUEST_TIME'] - $_SESSION['localTimestamp']['server'];
    	return $_SERVER['localTimestamp']['client'] + $diff;
    }
    2
    1. Breub62 Messages postés 3452 Statut Membre 369
       
      Au temps pour moi. Je pensais que ça retournait l'heure et date du client ;-)
      0
  2. Breub62 Messages postés 3452 Statut Membre 369
     
    N'importe quelle fonction time() ou date() renvoie la date système du client. Après il faut voir via quel langage tu veux gérer tout ça...
    0
  3. cgershon Messages postés 288 Statut Membre 4
     
    Merci avionf16
    mais as-tu essaye ce que tu propose ou c'est simplement une suggestion non verifiee ?
    0
  4. cgershon Messages postés 288 Statut Membre 4
     
    et puis comment attraper le pays du visiteur ? en php ou ajax ...
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    C'est une suggestion qui logiquement fonctionnne.
    Je n'ai pas testé le code, il pourrait y avoir des fautes de frappe.
    Pour la pays, il faudra passer par une base de données externe qui contient les plages d'IP.
    0