Recuperer l'heure locale du visiteur [Fermé]

Signaler
Messages postés
270
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
25 janvier 2016
-
Messages postés
18472
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
23 novembre 2020
-
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

Messages postés
18472
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
23 novembre 2020
4 230
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
Merci

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

CCM 76687 internautes nous ont dit merci ce mois-ci

Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
355
Au temps pour moi. Je pensais que ça retournait l'heure et date du client ;-)
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
355
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
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
et puis comment attraper le pays du visiteur ? en php ou ajax ...
Messages postés
18472
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
23 novembre 2020
4 230
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.