Muy buenas señores y señoras... una vez más las fechas son un quebradero de cabeza para mí en PHP... les expongo mi problema y antes de que me tilden de vago diré que me he leído (o eso creo) todas las funciones referentes a fechas en php.net:
- Tengo una web que me gustaría que localizase bien el horario según el país del visitante.
- Por lo que he podido probar mi servidor está en USA y tiene menos 9 horas respecto al horario español, lo que hacia era restarle esos segundos de diferencia y listo.
- Pero claro como eso es una chapuza he decidido guardar la fecha en UTC / GMT y apartir de ahí imprimir sumando o restando los segundos según el huso horario que necesite. Esto lo haria facilmente con date_default_timezone_set("UTC").
- La web estará solo localizada en castellano, al menos en un principio pero claro, si te visita un argentino, chileno o gente de habla hispana que no esté en España se me jode el invento...
- Así pues la pregunta sería... Cómo conocer el país de cada visitante?
Me he encontrado con algún script que se conecta a una bd y recoje según la ip el país... pero tampoco quería depender de cosas externas, y si es posible si hay otra solución...
Un saludo!
Se me ocurre: puedes tomar el idioma del explorador y de ahí determinar el país... (a excepcion de los argentinos que estamos en todo el mundo y configuramos nuestro Winchot como es-ar allí donde estuviéresemos)
es-es: ejpaña
es-ar: argentina
en-uk: ukrañia ;)
etc...
No me convence, puede haber gente con el navegador en inglés y que esté en España... etc :S
Ocvio... :D
Que yo sepa el unico método "seguro" es con las IP, pero tampoco es que sea 100% seguro...
Bueno lo unico que se me ocurre es acceder a la cabecera Date del mensaje HTTP. Cabeceras (http://www.lfcia.org/openprojects/camllets/doc/html/node19.html#sec:_cab_gen_HTTP)
Con la fecha y hora puedes compararla con la tuya y sacar la diferencia horaria. Claro que este campo depende del navegador y creo que no son obligatorias en el protocolo http. Para acceder a un campo de la cabecera Http tienes que acceder a la variable global $_HTTP["..."], creo que era asi, sq la web de php me apaparece como caida.
El unico casi seguro es a traves de la ip, pero dependes de elementos ajenos.
Creo que voy a optar por imprimir en gmt+1 y dar la opción a los usuarios de cambiar el huso horario en sus cuentas y listo... xD
Cita de: "yEnS"Creo que voy a optar por imprimir en gmt+1 y dar la opción a los usuarios de cambiar el huso horario en sus cuentas y listo... xD
Es lo que se hace en la mayor parte de los casos (lease foros y blogs prefabricados más comunes), por eso de que puedes tener una configuración específica de lenguaje del navegador y porque los geolocalizadores IP no son fiables.
No obstante, en vez de poner gmt+1 directamente en los perfiles, podrías estimarlo por geolocalización pidiendo a los usuarios que lo confirmen, durante un paso de la creación de perfil, claro, que lo mismo es demasiado comerse la cabeza...
Cita de: "fjfnaranjo"Cita de: "yEnS"Creo que voy a optar por imprimir en gmt+1 y dar la opción a los usuarios de cambiar el huso horario en sus cuentas y listo... xD
Es lo que se hace en la mayor parte de los casos (lease foros y blogs prefabricados más comunes), por eso de que puedes tener una configuración específica de lenguaje del navegador y porque los geolocalizadores IP no son fiables.
No obstante, en vez de poner gmt+1 directamente en los perfiles, podrías estimarlo por geolocalización pidiendo a los usuarios que lo confirmen, durante un paso de la creación de perfil, claro, que lo mismo es demasiado comerse la cabeza...
Eso me es imposible... me exijo a mí mismo un paso de registro con los campos:
nick, pass y mail, no quiero nada mas :D