Recuperer l'heure locale du visiteur [Fermé]

Messages postés
270
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
25 janvier 2016
- - Dernière réponse : avion-f16
Messages postés
18342
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 décembre 2019
- 7 juil. 2010 à 00:47
Bonjour,

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


Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
18342
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 décembre 2019
4104
2
Merci
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;
}

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 64150 internautes nous ont dit merci ce mois-ci

Breub62
Messages postés
3158
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
334 -
Au temps pour moi. Je pensais que ça retournait l'heure et date du client ;-)
Messages postés
3158
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
334
0
Merci
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...
Messages postés
270
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
25 janvier 2016
4
0
Merci
Merci avionf16
mais as-tu essaye ce que tu propose ou c'est simplement une suggestion non verifiee ?
Messages postés
270
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
25 janvier 2016
4
0
Merci
et puis comment attraper le pays du visiteur ? en php ou ajax ...
Messages postés
18342
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 décembre 2019
4104
0
Merci
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.