Foros del Web » Programando para Internet » PHP »

Misterioso cambio de hora

Estas en el tema de Misterioso cambio de hora en el foro de PHP en Foros del Web. Armé un reloj de cuenta regresiva, la cuestion es que al probarlo en diferentes pcs me cuenta un diferente horario, osea el horario de finalizacion ...
  #1 (permalink)  
Antiguo 27/12/2011, 17:41
 
Fecha de Ingreso: abril-2010
Ubicación: Ping: BSAS - Arg
Mensajes: 791
Antigüedad: 14 años
Puntos: 25
Misterioso cambio de hora

Armé un reloj de cuenta regresiva, la cuestion es que al probarlo en diferentes pcs me cuenta un diferente horario, osea el horario de finalizacion varia ya que toma la hora de la pc del cliente y no la del servidor.

Es raro ya que cuando hago un echo desde dos pcs diferentes me muestra los mismos valores, pero cuando lo ejecuto es una cosa totalmente diferente.

La pc uno tiene de hora 8:32 (por ejemplo) y la pc dostiene 8:37, lo cual hace que la pc dos llegue más rápido a la cuenta regresiva. Lo curioso es que cuando mando un echo con la hora de sql (TIMESTAMP) es igual en ambas pcs.

Dejo el código aver si alguien me puede echar una mano, gracias desde ya!

Código:
<?php

if (basename($_SERVER["REQUEST_URI"]) != str_replace(".php", "", basename($_SERVER["REQUEST_URI"]))){
header("Location: ".str_replace(".php", "", basename($_SERVER["REQUEST_URI"])));
}

session_start();

/////// Validar Formulario > Conectar DB
include 'functions/conect.php';
///////

/////// Validar Formulario > Conectar DB
include 'functions/config.php';
///////

/// En caso de no estar activado el sistema devolver al home
if(!$preregister){
header("Location: home");
}
///

/// Redireccionar si es que terminó el conteo (si se aplica un refresh)
	$fechaactual = mysql_fetch_array(mysql_query("SELECT CURRENT_TIMESTAMP AS Time"));
	
	$espacioanti = explode(" ",$fechaactual["Time"]);
	$fechaanti = explode("-", $espacioanti[0]);
	$fechaantimin = explode(":", $espacioanti[1]);  
	
	$espacionue = explode(" ",$fechalanzamiento);
	$fechanueva = explode("-", $espacionue[0]);
	$fechanuevamin = explode(":", $espacionue[1]);
	
	// HORA MINUTO SEGUNDO MES DIA AÑO
	$fecha1 = mktime($fechaantimin[0],$fechaantimin[1],$fechaantimin[2],$fechaanti[1],$fechaanti[2],$fechaanti[0]); 
	$fecha2 = mktime($fechanuevamin[0],$fechanuevamin[1],$fechanuevamin[2],$fechanueva[1],$fechanueva[2],$fechanueva[0]); 
	$diferencia = $fecha2-$fecha1; 
	$diff['horas'] = (int)($diferencia/(60*60)); 
	
	//echo $diff['horas'];
	if($diferencia <= 0){
		header("Location: home");
	}
	
///

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<link href="style/prereg.css" rel="stylesheet" type="text/css" />
<style type="text/css">
body { background-color: #303030; }
</style>
<script type="text/javascript" language="JavaScript">
 var futuro = new Date (<?php echo $fechanueva[0]; ?>,<?php echo $fechanueva[1]-1; ?>,<?php echo $fechanueva[2]; ?>,<?php echo $fechanuevamin[0]; ?>,<?php echo $fechanuevamin[1]; ?>); 
 var actualiza = 1000; 
 function faltan(){ 
 var ahora = new Date(); 
 var faltan = futuro - ahora; 
 if (faltan > 0){ 
 var segundos = Math.round(faltan/1000); 
 var minutos = Math.floor(segundos/60); 
 var segundos_s = segundos%60; 
 var horas = Math.floor(minutos/60); 
 var minutos_s = minutos%60; 
 var dias = Math.floor(horas/24); 
 var horas_s = horas%24; 
 document.formulario.reloj.value= dias + " dias - " + horas_s + " horas - " + 
 +minutos_s + " minutos - " + segundos_s + " segundos" ; 
 setTimeout("faltan()",actualiza); 
 } 
 else { 
 document.formulario.reloj.value= "0 dias - 0 horas - 0 minutos - 0 segundos" ; 
 return location.href="home"; 
 } 
 } 
 </script> 
</head>
<body onload="faltan()">
<div class="Deep">
	<div class="BoxCutter">
		<div class="BoxBann">
		<img src="imgweb/logo_corona.png" alt="Hotplank Logo" width="258" height="49" border="0" class="ImgBann" />
		<!-- padding-top: 45px; PARA BOTONES LOGEADO -->
			<div class="OpcionesMenu" align="center" style="padding-top: 45px;">					
					<a href="salir" class="BotonMenu">Salir</a>
			</div>
		</div>
		
		<!--Imagen de Fondo DEFAULT (  
		
		background-image: url(imgweb/contenidofont.png); background-repeat: no-repeat; padding-top: 100px; background-color:#ffffff;
		padding-top: 30px; background-color:#color;
		
		ffd6d6, ffa4a4
		f0c2ff, e187ff
		acbaff
		affaff, 5bf5ff
		c9ffd7, 55ff81
		e3ffa6, c6ff4a
		fff7b5, ffec4d
		ffcda5, ff9e50
		ffb1b1, ff5d5d

		-->
		<div class="Contenido" style="background-image: url(imgweb/contenidofont.png); background-repeat: no-repeat; padding-top: 100px; background-color:#ffffff;">
			<!-- CONTENIDO GENERAL -->
			
			<!-- COLORES INDICADOR
			d8ffda
			fffbd8
			ffd8d8
			-->
			
				
		  <div class="CntTitulo">Gracias por pre-registrarte, falta:</div>

		 <form name="formulario" style=" margin-top: 70px; margin-bottom: 50px;"> 
		 <p align="center"><font face="Corbel"> 
		 <input type="text" name="reloj" value="" size="45" style="text-align : center; font-family:Arial; color:#616161; font-size: 40px;">
		 </font></p>
		 </form>
		 
		 <div class="CntTitulo" style="font-size: 18px;">Serás redireccionado cuando la cuenta regresiva llegue a cero. <strong>Bienvenido a XXXXXXXXX!</strong></div>

			<!-- FIN DE CONTENIDO GENERAL -->
	  </div>
		<div class="Feet" align="center">
		<?php include 'functions/feet.php'; ?>
		</div>
	</div>
</div>
</body>
</html>
  #2 (permalink)  
Antiguo 27/12/2011, 17:47
 
Fecha de Ingreso: abril-2010
Ubicación: Ping: BSAS - Arg
Mensajes: 791
Antigüedad: 14 años
Puntos: 25
Respuesta: Misterioso cambio de hora

PD: Configuré la zona horaria, pero al parecer no tiene que ver con la zona horaria sinó con el reloj mismo, ya que toma la hora del cliente y no del servidor al momento de ver en que hora está.
  #3 (permalink)  
Antiguo 27/12/2011, 17:54
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Respuesta: Misterioso cambio de hora

si estas usando un echo del sql (TIMESTAMP)... siempre sera la misma hora se cual sea la maquina y la configuración de la misma, porque siempre tomará la hora con la que esta configurado el servidor.

Salud2
__________________

  #4 (permalink)  
Antiguo 27/12/2011, 17:57
 
Fecha de Ingreso: abril-2010
Ubicación: Ping: BSAS - Arg
Mensajes: 791
Antigüedad: 14 años
Puntos: 25
Respuesta: Misterioso cambio de hora

Cita:
Iniciado por gerson Ver Mensaje
si estas usando un echo del sql (TIMESTAMP)... siempre sera la misma hora se cual sea la maquina y la configuración de la misma, porque siempre tomará la hora con la que esta configurado el servidor.

Salud2
Eso parece ser, cuando mando un echo con lo que saca SQL, me sale la misma hora en ambas pcs, pero al momento de ejecutar el código es una cosa totalmente distinta. Toma la hora de la pc, no del servidor.

PD: Estoy usando xammp en Windows 7 (a modo de testeo).
  #5 (permalink)  
Antiguo 27/12/2011, 18:10
Avatar de ElSiniestro  
Fecha de Ingreso: diciembre-2011
Ubicación: Ibagué
Mensajes: 115
Antigüedad: 12 años, 4 meses
Puntos: 23
Respuesta: Misterioso cambio de hora

¿Y si cambias el date.timezone en el php.ini?
  #6 (permalink)  
Antiguo 27/12/2011, 18:35
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Misterioso cambio de hora

El problema es que la cuenta regresiva está en Javascript y cuando asignas la fecha, utiliza el reloj de la PC del usuario, revisa cuál esta bien y cuál no entre futuro y ahora... ambas tómalas del servidor.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 27/12/2011, 18:37
 
Fecha de Ingreso: abril-2010
Ubicación: Ping: BSAS - Arg
Mensajes: 791
Antigüedad: 14 años
Puntos: 25
Respuesta: Misterioso cambio de hora

Cita:
Iniciado por Triby Ver Mensaje
El problema es que la cuenta regresiva está en Javascript y cuando asignas la fecha, utiliza el reloj de la PC del usuario, revisa cuál esta bien y cuál no entre futuro y ahora... ambas tómalas del servidor.
Ahhhhhh... quizás en esta funcion?:

Cita:
var ahora = new Date();
  #8 (permalink)  
Antiguo 27/12/2011, 18:40
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Misterioso cambio de hora

Efectivamente, esa toma la hora del cliente y no del servidor, revisa cómo haces con futuro y haz lo mismo... pero con la hora adecuada
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 27/12/2011, 19:39
 
Fecha de Ingreso: abril-2010
Ubicación: Ping: BSAS - Arg
Mensajes: 791
Antigüedad: 14 años
Puntos: 25
Respuesta: Misterioso cambio de hora

Cita:
Iniciado por Triby Ver Mensaje
Efectivamente, esa toma la hora del cliente y no del servidor, revisa cómo haces con futuro y haz lo mismo... pero con la hora adecuada
Mil gracias man!
Mañana le daré "caña" a ese asunto. Pero al parecer es eso ;)
  #10 (permalink)  
Antiguo 30/12/2011, 14:51
 
Fecha de Ingreso: abril-2010
Ubicación: Ping: BSAS - Arg
Mensajes: 791
Antigüedad: 14 años
Puntos: 25
Respuesta: Misterioso cambio de hora

Probé con esto y no funcionó:

Cita:

ahora=new Date();
ahora.setDate(<?php echo intval(date(j)) ?>);
ahora.setMonth(<?php echo intval(date(n)-1) ?>);
ahora.setFullYear(<?php echo intval(date(Y)) ?>);
ahora.setHours(<?php echo intval(date(H)) ?>);
ahora.setMinutes(<?php echo intval(date(i)) ?>);
ahora.setSeconds(<?php echo intval(date(s)) ?>);

Cuando lo ejecuto no avanca el reloj. Osea se queda en la misma hora.
  #11 (permalink)  
Antiguo 01/01/2012, 07:33
 
Fecha de Ingreso: abril-2010
Ubicación: Ping: BSAS - Arg
Mensajes: 791
Antigüedad: 14 años
Puntos: 25
Respuesta: Misterioso cambio de hora

Someone idea?
Feliz 2012!

Etiquetas: formulario, html, mysql, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:27.