Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/06/2009, 12:36
wiki_
 
Fecha de Ingreso: marzo-2008
Mensajes: 12
Antigüedad: 16 años, 2 meses
Puntos: 0
Tomar la hora del servidor con javascript

Wenas:

Resulta que tengo una aplicación que te permite acceder a unas páginas por reserva, me explico.

Tu entras y haces una reserva para ver una página tal día a tal hora, y la hacer por 1, o 2 horas de duración.


Bien. una vez que tengas la reserva hecha sólo puedes entrar en ella el día y a la hora de la reserva, cosa que controlo por PHP. Tengo una función en php que te controla el tiempo que te queda internamente, pero claro, php coje la hora del servidor, no del ordenador del cliente.

Mi problema es: tengo un contador que me muestra la cuenta atrás del tiempo que me queda para ver la página en javascript, pero claro, javascript es un lenguaje no orientado a servidor, por lo que la hora me la toma del cliente y la cuenta atrás no coincide con el tiempo que de verdad te queda de reserva, por no hablar si se entra desde algún país que tenga distinta región horaria que el de donde esta el servidor.

Habría alguna manera de hacer que el javascript tomara la hora del servidor??

En concreto mi función es:

Código:
<?php

       //Tomo los valores de la reserva de la base de datos.

	$end_year = strftime('%Y', $termina);
	$end_month = strftime('%m', $termina);
	$end_day = strftime('%d', $termina);
	$end_hour  = strftime('%H', $termina);
  	$end_min   = strftime('%M', $termina);
	$end_seg   = strftime('%S', $termina);
	
	
?>

// Los guardo en las variables de javascript para usarlos en la función

toYear=<?php echo $end_year;?>;
toMonth=<?php echo $end_month;?>;
toDay=<?php echo $end_day;?>;
toHour=<?php echo $end_hour;?>;
toMinute=<?php echo $end_min;?>;
toSecond=<?php echo $end_seg;?>;


function countDown()
{
	new_year=0;
	new_month=0;
	new_day=0;
	new_hour=0;
	new_minute=0;
	new_second=0;
	actual_date=new Date();

	if(actual_date.getFullYear()>toYear)
	{
		//si ya nos hemos pasado del año, mostramos los valores a 0
		form.second.value=0;
		form.minute.value=0;
		form.hour.value=0;
		form.day.value=0;
		form.month.value=0;
		form.year.value=0;
	}else{
		new_second=new_second+toSecond-actual_date.getSeconds();
		if(new_second<0)
		{
			new_second=60+new_second;
			new_minute=-1;
		}
		form.second.value=new_second;

		new_minute=new_minute+toMinute-actual_date.getMinutes();
		if(new_minute<0)
		{
			new_minute=60+new_minute;
			new_hour=-1;
		}
		form.minute.value=new_minute;

		new_hour=new_hour+toHour-actual_date.getHours();
		if(new_hour<0)
		{
			new_hour=24+new_hour;
			new_day=-1;
		}
		form.hour.value=new_hour;

		new_day=new_day+toDay-actual_date.getDate();
		if(new_day<0)
		{
			x=actual_date.getMonth();
			if(x==0||x==2||x==4||x==6||x==7||x==9||x==11){new_day=31+new_day;}
			if(x==3||x==5||x==8||x==10){new_day=30+new_day;}
			if(x==1)
			{
				//comprobamos si es un año bisiesto...
				if(actual_date.getYear()/4-Math.floor(actual_date.getYear()/4)==0)
				{
					actual_date=29+actual_date;
				}else{
					actual_date=28+actual_date;
				}
			}
		}
		form.day.value=new_day;

		new_month=-1;
		new_month=new_month+toMonth-actual_date.getMonth();
		if(new_month<0)
		{
			new_month=11+new_month;
			new_year=-1;
		}
		form.month.value=new_month;

		new_year=new_year+toYear-actual_date.getFullYear();
		if(new_year<0)
		{
			form.year.value=0;
		}else{
			form.year.value=new_year;
			//vuelve a ejecutar la funcion dentro de 1000 milisegundos = 1 segundo
			setTimeout("countDown()",1000);
		}
	}
}
He intentado tomar los parámetros con php y pasarselos a los del javascript, pero no lo consigo....

AYUDA POR FAVOR!!!