Recuperer l'heure locale du visiteur

Fermé
cgershon Messages postés 267 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 25 janvier 2016 - 6 juil. 2010 à 09:40
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 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


A voir également:

5 réponses

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
6 juil. 2010 à 10:37
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
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
6 juil. 2010 à 10:39
Au temps pour moi. Je pensais que ça retournait l'heure et date du client ;-)
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
6 juil. 2010 à 09:50
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
cgershon Messages postés 267 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 25 janvier 2016 4
6 juil. 2010 à 20:07
Merci avionf16
mais as-tu essaye ce que tu propose ou c'est simplement une suggestion non verifiee ?
0
cgershon Messages postés 267 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 25 janvier 2016 4
6 juil. 2010 à 20:09
et puis comment attraper le pays du visiteur ? en php ou ajax ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
7 juil. 2010 à 00:47
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